当前位置:首页>软件介绍>MySQLl数据库文档 查询:
     
MySQLl数据库文档

        由于新手入门PHP+Mysql技术,必定对Mysql操作存有疑问。 

        尽管PHPMyadmin管理数据库对新手来说也不妨为一种很好的方式。但更多的实际使用还要靠大家对Myql语句格式的精通和熟练的操作。 

        为了方便新手尽快入门,掌握Mysql的奥妙。在下费了一个礼拜时间的调试和整理,终于完稿了这份比较完善的入门级操作实例的指南。希望能给新入门的朋友扬帆指路,送一满帆的顺风。 

        Mysql初级解读  

        安装注意事项 

        在安装的过程中,请记好您的密码,这是将来登录mysql的钥匙。  

        一、Mysql数据库服务器登录 

        登录mysql需要切换到dos下的mysql的bin目录,进行如下操作: 

        语法格式:mysql -h host_name -u user_name -p password (本机的话-h 和host_name可省,即:mysql -u root -p)  

        My Experience: 

        C:program filesmysqlmysql server 4.1bin>mysql -u root -p 

        Enter password:****** 

        先输入用户名和密码登陆要求(加上-p),回车后等出现"Enter password:",再输入密码回车,这样就可以 

        成功登陆mysql,否则将会登陆失败。  

        登陆成功后会显示如下信息: 

        Welcome to the MySQL monitor. Commands end with ; or g. 

        Your MySQL connection id is 1 to server version: 4.1.10-nt 

        Type 'help;' or 'h' for help. Type 'c' to clear the buffer. 

        mysql> 

        标识"mysql>",当你看到这个出现在窗口的最左边的顶格时,这就是告诉你,你可以输入命令进行操作了。 

        mysql> s 查看版本信息 

        mysql> q or mysql> quit 退出mysql数据库服务器 

        mysql> h or mysql> help 查看帮助(其他的数据库服务器相关命令) 

        doc 下停止mysql: 

        net stop mysql 

        doc 下启动mysql : 

        net start mysql  

        二、数据库操作 

        所要注意的是,所有举例的显示结果,均为下面操作步骤按顺序进行的结果。  

        2.1 查询语句 

        2.1.1 查看Mysql数据库的版本号和服务器的当前日期 

        mysql> select version(),current_date; (操作方式一) 

        mysql> select version() 

        -> ,current_date; (操作方式二) 

        ※:操作语句间用","隔开,用";"来表示操作结束,操作语句输入过程中,换行不影响操作过程。 

        2.1.2 查看服务器中的所有数据库 

        mysql> show databases; 

        2.1.3 显示MySQL数据库里表的概要 

        mysql> show table status from 数据库名G  

        2.2 创建数据库 

        2.2.1 创建数据库(当然,数据库名"asb"不能是已经存在的) 

        mysql> create database asb; 

        2.2.2 选用数据库,使其成为当前操作的数据库 

        mysql> use asb; 

        成功选中后会有如下显示: 

        Database changed 

        甚至可以在窗口命令登陆mysql数据库的时候直接选中要操作的数据库(当然前提是asb数据库存在) 

        bin>mysql asb -u uesername -p 

        Enter password:****** 

        2.2.3 查看当前所操作的数据库名称 

        mysql> select database(); 

        运行后结果如下: 

        +------------+ 

        | database() | 

        +------------+ 

        | asb | 

        +------------+ 

        1 row in set (0.00 sec)  

        2.3 创建表 

        2.3.1 用"create table"创建表(确认是要在当前数据库中创建,不是的话就先用'use'选中要创建表的那个数据库) 

        mysql> create table emp(emp_id varchar(6) 

        -> ,emp_name varchar(10) 

        -> ,emp_age int 

        -> ,emp-sal int 

        -> ,emp_bir date 

        -> ,emp_sex varchar(5) 

        -> ); 

        2.3.2 查看当前数据库中的表(可以检验上例的"emp"表是否成功建立) 

        mysql> show tables; 

        如果是成功将是如下显示: 

        +---------------+ 

        | Tables_in_asb | 

        +---------------+ 

        | emp | 

        +---------------+ 

        1 row in set (0.00 sec) 

        2.3.3 查看数据表的结构 

        mysql> describe emp; 

        运行后结果会如如下显示: 

        +----------+-------------+------+-----+---------+-------+ 

        | Field | Type | Null | Key | Default | Extra | 

        +----------+-------------+------+-----+---------+-------+ 

        | emp_id | varchar(6) | YES | | NULL | | 

        | emp_name | varchar(10) | YES | | NULL | | 

        | emp_age | int(11) | YES | | NULL | | 

        | emp_sal | int(11) | YES | | NULL | | 

        | emp_bir | date | YES | | NULL | | 

        | emp_sex | varchar(5) | YES | | NULL | |  

        2.4 插入数据 

        2.4.1 使用INSERT语句进行插入记录操作(数据库表中每一行就是一个记录,插入记录实际上就是向表中插入一行) 

        格式:INSERT INTO table_name(数据表名) VALUES(值1,值2,值3...); 

        在VALUES关键字后括号中的数值和字符段,必须和你所建的表所定义的字段数据类型必须一致~ 

        mysql> insert into emp values 

        -> ('100005','啸天',27,3000,'1979-07-10','male'); 

        插入成功后会有如下信息显示: 

        Query OK, 1 row affected (0.03 sec) 

        2.4.2 查看表中的数据(可以确定数据是否已经成功插入) 

        mysql> select * from emp; 

        成功插入后的数据显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100005 | 啸天 | 27 | 3000 | 1979-07-10 | male | 

        +--------+----------+---------+---------+------------+---------+ 

        1 row in set (0.00 sec) 

        一次性插入多行的格式:INSERT INTO table_name(数据表名) VALUES(值1,值2,值3...),(值1,值2,值3...); 

        mysql> insert into emp values ('100001','红枫',29,8000,'1977-01-01','male'),

        ('100002','丽鹃',27,7000,'1979-12-31','fmale'); 

        可以查看插入后的数据结果: 

        mysql> select * from emp; 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100005 | 啸天 | 27 | 3000 | 1979-07-10 | male | 

        | 100004 | 红枫 | 29 | 8000 | 1977-01-01 | male | 

        | 100002 | 丽鹃 | 27 | 7000 | 1979-12-31 | fmale | 

        +--------+----------+---------+---------+------------+---------+ 

        3 rows in set (0.00 sec)  

        2.5 修改数据 

        2.5.1 使用UPDATE语句来更新表中的数据 

        mysql> update emp set emp_id=100001 where emp_name='红枫'; 

        修改结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100005 | 啸天 | 27 | 3000 | 1979-07-10 | male | 

        | 100001 | 红枫 | 29 | 8000 | 1977-01-01 | male | 

        | 100002 | 丽鹃 | 27 | 7000 | 1979-12-31 | fmale | 

        +--------+----------+---------+---------+------------+---------+ 

        3 rows in set (0.00 sec) 

        如果该语句没有后面的where限制,将会对表中所有的记录都进行修改。 

        如,给全部人加薪1000,可以如下修改: 

        mysql> update emp set emp_sal=emp_sal+1000; 

        修改结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100005 | 啸天 | 27 | 4000 | 1979-07-10 | male | 

        | 100001 | 红枫 | 29 | 9000 | 1977-01-01 | male | 

        | 100002 | 丽鹃 | 27 | 8000 | 1979-12-31 | fmale | 

        +--------+----------+---------+---------+------------+---------+ 

        3 rows in set (0.00 sec)   

        2.6 高级查询方法 

        2.6.1 记录查询 

        查询emp表中,emp_name为啸天的全部信息 

        mysql> select * from emp where emp_name='啸天'; 

        查询结果显示如下:

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100005 | 啸天 | 27 | 4000 | 1979-07-10 | male | 

        +--------+----------+---------+---------+------------+---------+ 

        1 row in set (0.00 sec) 

        查询emp表中,emp_sal,工资在5000以上的全部信息 

        mysql> select * from emp where emp_sal>5000; 

        查询结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100001 | 红枫 | 29 | 9000 | 1977-01-01 | male | 

        | 100002 | 丽鹃 | 27 | 8000 | 1979-12-31 | fmale | 

        +--------+----------+---------+---------+------------+---------+ 

        2 rows in set (0.00 sec) 

        查询emp表中在1978年1月1日之后出生的 

        mysql> select * from emp where emp_bir>'1978-01-01'; 

        查询结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100005 | 啸天 | 27 | 4000 | 1979-07-10 | male | 

        | 100002 | 丽鹃 | 27 | 8000 | 1979-12-31 | fmale | 

        +--------+----------+---------+---------+------------+---------+ 

        2 rows in set (0.00 sec) 

        查询emp表中在1979年12月1日之前出生,工资在5000以上的 

        mysql> select * from emp where emp_bir<'1979-12-01' and emp_sal>5000; 

        查询结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100001 | 红枫 | 29 | 9000 | 1977-01-01 | male | 

        +--------+----------+---------+---------+------------+---------+ 

        1 row in set (0.00 sec) 

        2.6.2 字段查询 

        CEO查看员工工资情况 

        mysql> select emp_name,emp_sal from emp; 

        查询结果显示如下: 

        +----------+---------+ 

        | emp_name | emp_sal | 

        +----------+---------+ 

        | 啸天 | 4000 | 

        | 红枫 | 9000 | 

        | 丽鹃 | 8000 | 

        +----------+---------+ 

        3 rows in set (0.00 sec) 

        查看1978年后出生的人的姓名、工资和性别 

        mysql> select emp_name,emp_sal,emp_sex from emp where emp_bir>"1977-12-31"; 

        查询结果显示如下: 

        +----------+---------+---------+ 

        | emp_name | emp_sal | emp_sex | 

        +----------+---------+---------+ 

        | 啸天 | 4000 | male | 

        | 丽鹃 | 8000 | fmale | 

        +----------+---------+---------+ 

        2 rows in set (0.00 sec) 

        2.6.3 查询结果排序 

        用ORDER BY语句对emp表中所有员工工资高低顺序查询结果(默认是从低到高——升序) 

        mysql> select * from emp order by emp_sal; 

        查询结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100005 | 啸天 | 27 | 4000 | 1979-07-10 | male | 

        | 100002 | 丽鹃 | 27 | 8000 | 1979-12-31 | fmale | 

        | 100001 | 红枫 | 29 | 9000 | 1977-01-01 | male | 

        +--------+----------+---------+---------+------------+---------+ 

        3 rows in set (0.00 sec) 

        用DESC关键字来进行从高到低排序——降序 

        mysql> select * from emp order by emp_sal desc; 

        查询结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100001 | 红枫 | 29 | 9000 | 1977-01-01 | male | 

        | 100002 | 丽鹃 | 27 | 8000 | 1979-12-31 | fmale | 

        | 100005 | 啸天 | 27 | 4000 | 1979-07-10 | male | 

        +--------+----------+---------+---------+------------+---------+ 

        3 rows in set (0.00 sec) 

        2.6.4 查询结果数量的限制 

        用LIMIT查看emp表中工资收入排名前两个员工的资料: 

        mysql> select * from emp order by emp_sal desc limit 2; 

        查询结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100001 | 红枫 | 29 | 9000 | 1977-01-01 | male | 

        | 100002 | 丽鹃 | 27 | 8000 | 1979-12-31 | fmale | 

        +--------+----------+---------+---------+------------+---------+ 

        2 rows in set (0.00 sec) 

        查看工资排名第2到第3的员工资料: 

        mysql> select * from emp order by emp_sal desc limit 1,2; 

        查询结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100002 | 丽鹃 | 27 | 8000 | 1979-12-31 | fmale | 

        | 100005 | 啸天 | 27 | 4000 | 1979-07-10 | male | 

        +--------+----------+---------+---------+------------+---------+ 

        2 rows in set (0.01 sec) 

        使用rand()抽样调查,随机抽取2个员工,查看其资料 

        mysql> select * from emp order by rand() limit 2; 

        如如下结果:(随机的) 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100005 | 啸天 | 27 | 4000 | 1979- 07-10 | male | 

        | 100001 | 红枫 | 29 | 9000 | 1977-01-01 | male | 

        +--------+----------+---------+---------+------------+---------+ 

        2 rows in set (0.01 sec) 

        2.6.5 查询结果的字段联合和重新命名 

        mysql> select concat(emp_id," ",emp_name) from emp; 

        查询结果:

        +------------------------------+ 

        | concat(emp_id," ",emp_name) | 

        +------------------------------+ 

        | 100005 啸天 | 

        | 100001 红枫 | 

        | 100002 丽鹃 | 

        +------------------------------+ 

        3 rows in set (0.00 sec) 

        用AS关键字重新给输出结果命名标题 

        mysql> select concat(emp_id," ",emp_name) as info from emp; 

        查询结果如下显示: 

        +----------------+ 

        | info | 

        +----------------+ 

        | 100005 啸天 | 

        | 100001 红枫 | 

        | 100002 丽鹃 | 

        +----------------+ 

        3 rows in set (0.00 sec) 

        2.6.6 日期查询的相关运算 

        可以通过YEAR()、MONTH()、DAYOFMONTH()函数来提取日期的组成元素 

        查询7月份出生的员工资料: 

        mysql> select * from emp where month(emp_bir)=7; 

        查询结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100005 | 啸天 | 27 | 4000 | 1979-07-10 | male | 

        +--------+----------+---------+---------+------------+---------+ 

        1 row in set (0.00 sec) 

        可以利用英文月份来查询: 

        mysql> select * from emp where monthname(emp_bir)="January"; 

        查询结果显示如下: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100001 | 红枫 | 29 | 9000 | 1977-01-01 | male | 

        +--------+----------+---------+---------+------------+---------+ 

        1 row in set (0.00 sec) 

        利用TO_DAYS()函数可以查询出职工们从出生到现在所经历的时间,单位是天数 

        mysql> select to_days(current_date) - to_days(emp_bir) as livingdays from emp; 

        查询后结果如下: 

        +------------+ 

        | livingdays | 

        +------------+ 

        | 9425 | 

        | 10345 | 

        | 9251 | 

        +------------+ 

        3 rows in set (0.00 sec) 

        计算从现在开始经历100天后的日期 

        mysql> select date_add(now(),interval 100 day); 

        查询结果如下: 

        +----------------------------------+ 

        | date_add(now(),interval 100 day) | 

        +----------------------------------+ 

        | 2005-08-07 13:56:58 | 

        +----------------------------------+ 

        1 row in set (0.00 sec) 

        计算从现在开始经历100天前的日期 

        mysql> select date_sub(now(),interval 100 day); 

        查询结果如下: 

        +----------------------------------+ 

        | date_sub(now(),interval 100 day) | 

        +----------------------------------+ 

        | 2005-01-19 14:00:20 | 

        +----------------------------------+ 

        1 row in set (0.00 sec) 

        2.6.7 数据统计 

        使用COUNT()函数计算表中的数据数目(比如emp表中的员工数目) 

        mysql> select count(*) from emp; 

        查询结果如下: 

        +----------+ 

        | count(*) | 

        +----------+ 

        | 3 | 

        +----------+ 

        1 row in set (0.01 sec) 

        统计工资上5000的数目 

        mysql> select count(*) from emp where emp_sal>5000; 

        查询结果如下: 

        +----------+ 

        | count(*) | 

        +----------+ 

        | 2 | 

        +----------+ 

        1 row in set (0.00 sec) 

        统计男女职工数目:(GROUP BY语句分类) 

        mysql> select emp_sex,count(*) from emp group by emp_sex; 

        查询结果如下: 

        +---------+----------+ 

        | emp_sex | count(*) | 

        +---------+----------+ 

        | fmale | 1 | 

        | male | 2 | 

        +---------+----------+ 

        2 rows in set (0.01 sec) 

        使用数据统计函数(MIN(),MAX(),SUM(),AVG()) 

        mysql> select 

        -> min(emp_sal) as min_salary, 

        -> max(emp_sal) as max_salary, 

        -> sum(emp_sal) as sum_salary, 

        -> avg(emp_sal) as avg_salary, 

        -> count(*) as employee_num 

        -> from emp; 

        查询结果如下: 

        +------------+------------+------------+------------+--------------+ 

        | min_salary | max_salary | sum_salary | avg_salary | employee_num | 

        +------------+------------+------------+------------+--------------+ 

        | 4000 | 9000 | 21000 | 7000.0000 | 3 | 

        +------------+------------+------------+------------+--------------+ 

        1 row in set (0.00 sec) 

        2.6.8 从多个数据表中检索信息 

        根据前面的方法,分别进行如下操作: 

        1). 在数据库asb中建立一个新表dept,表中有两项元素: 

        dept_id --> varchar(6) 

        dept_name --> varchar(10) 

        2). 在表emp中插入如下一行新记录: 

        +--------+----------+---------+---------+------------+---------+ 

        | emp_id | emp_name | emp_age | emp_sal | emp_bir | emp_sex | 

        +--------+----------+---------+---------+------------+---------+ 

        | 100003 | 小红 | 30 | 8000 | 1976-11-11 | fmale | 

        +--------+----------+---------+---------+------------+---------+ 

        3). 在新表dept中,输入如下记录 

        +---------+-----------+ 

        | dept_id | dept_name | 

        +---------+-----------+ 

        | 100005 | MTD | 

        | 100001 | MTD | 

        | 100002 | MTD | 

        | 100003 | HR | 

        +---------+-----------+ 

        查询emp和dept这两个表中,员工的姓名和部门信息 

        mysql> select emp.emp_name,dept.dept_name from emp,dept 

        -> where emp.emp_id=dept.dept_id; 

        查询结果如下: 

        +----------+-----------+ 

        | emp_name | dept_name | 

        +----------+-----------+ 

        | 啸天 | MTD | 

        | 红枫 | MTD | 

        | 丽鹃 | MTD | 

        | 小红 | HR | 

        +----------+-----------+ 

        4 rows in set (0.00 sec) 

        多表查询时注意: 

        1). FROM子句必须给出所查询的表的全部名称 

        2). 选择字段时候注明其所属表的名称(如emp表中的emp_id要表示为emp.emp_id) 

        3). 在Where子句中必须指明查询的条件(如,emp.emp_id和dept.dept_id是相同意义的元素)  

        2.7 删除表单数据 

        2.7.1 使用DELETE语句删除表单中的数据记录 

        小红不在了哦,删了吧 

        mysql>delete from emp where emp_name='小红'; 

        执行成功后会如下显示: 

        Query OK, 1 row affected (0.06 sec) 

        省略where是删除全部表中的记录 

        2.7.2 使用DRO删除表 

        (先随便建立一个数据库dt,并建张临时表fuck) 

        mysql>drop table abc; 

        2.7.3 使用DRO删除数据库 

        mysql>drop database dt;  

        2.8 改变数据表的结构 

        先建立一个新表id (内带一个属性id_name varchar(6)),输入一行数据(xgw) 

        2.8.1 对表重新命名 

        mysql>alter table 数据表名 rename as 数据表的新名字; 

        把表id改名成name 

        mysql> alter table id rename as name; 

        2.8.2 给数据表增加一个字段 

        mysql>alter table 数据表名 add 字段名称 字段类型; 

        在改过名的新表name中增加一个字段(id int(6)) 

        mysql>alter table name add id int(6); 

        增加成功后有如下显示: 

        Query OK, 1 row affected (0.26 sec) 

        Records: 1 Duplicates: 0 Warnings: 0 

        2.8.3 更改已经建立的字段类型 

        alter table 数据表名 modify 字段名称 字段类型; 

        把name表中id属性的类型改成10个长度的字符类型 

        mysql> alter table name modify id varchar(10); 

        


汽车4s管理软件怎么选如何利用汽车维修管理软件完善汽修厂前台接待规范
汽车美容管理软件功能分析汽车会员积分管理软件
汽车租赁软件汽车整车构造虚拟教学软件
汽修/汽配/汽车美容软件汽车快修服务软件
汽车4S店管理软件汽车构造仿真教学软件
MySQL个人学习笔记MySQL排序语句
MySQL入门篇MySQL缓存技术
MySQL管理器Windows下安装MySQL图解
信息发布:广州名易软件有限公司 http://www.myidp.net
  • 名易软件销售服务
  • 名易软件销售服务
  • 名易软件技术服务

  • MySQLl数据库文档