DOS中对MySQL的操作
首先在本机安装好MySQL环境。
写操作语句之前,写几点MySQL的基本知识。
1.什么是数据库
SQL:Structure Query Language
存数据的仓库/集合,并有一定的规则结构
SQL是客户端操作数据库的一种工具、命令,主要以存取为主
2.数据库简介
Oracle/java java的主要数据库是Oracle
SQLServer/Microsoft(微软) Microsoft(微软)的数据库是SQLServer
DB2/IBM IBM的数据库是DB2
MySQL的最好运行效果环境:Linux+Apache+MySQL+Php
3.卸载MySQL
在控制面板的服务列表里先停止服务,然后再卸载。
4.SQL[通用/特定]与数据库的关系
1)每种关系型数据库都支持的SQL命令,叫通用SQL
2)每种关系型数据库都根据自身数据库的特点,量身定做的SQL,叫特定SQL。
5.数据库语句,大小写不敏感,在MySQL环境中,语句要加分号,不在则不加分号。
以下是在DOS中对MySQL的具体语句操作并附上截图。
windows + R在运行窗口输入cmd
打开DOS命令窗口
进入MySQL(数据库服务器)
mysql -u -p
输入正确的用户名和密码后,显示如下内容:
1.显示mysql中的所有数据库
语句:mysql> show databases;
显示内容:
这个列表显示的mysql中的存放的所有数据库的名字。
2.在mysql中创建一个名为users的新数据库。
语句:mysql> create database users;
如果成功的话显示如下内容:
在创建完以后输入:mysql> show databases;
显示:
说明新的名为users的数据库已经创建成功了。
在新建的同时可以设置数据库的字符格式,语句:mysql> create database users character set utf8;
用语句:mysql> alter database mydb2 character set gbk; 可以修改数据库的字符格式。
如果不设置的话,默认的数据库格式是utf8
在创建数据库的时候也可以加判断语句:mysql> create database if not exists users;不存在则创建,存在则不创建。
3.查看数据库的定义信息
语句:mysql> show create database users;
效果:
4.在数据库列表中选择要使用的数据库的名字,以便以后对它的操作。
语句:mysql> use users database;
显示: 以后便是对users这个数据库的操作了。
5.在数据库中创建名为user的表,并增加id、password、name、age、birthday的属性。
语句:mysql> create table user(id int,name varchar(20),password varchar(6),age int,bir
thday date);
char格式是固定长度。长度最长为65535,char(x) x的值为多少,长度就为多少,即使输入的字符的长度小于x,也按x的长度计算。
varchar 可以伸缩长度(与char的主要区别),最大程度的利用资源。长度最长为65535, varchar(20) 代表某个属性最多放入20个字符。
int(5) 如果数据<5,则右对齐,数据长度默认为5位,如果大于5位,按照插入值的多少改变位数,但是必须满足int类型的大小。
date类型的数据会进行自动检测,如‘2013-04-26’符合要求,但是如果写‘2013-04-33’已经超出最大值31天,会报错。
datetime精确到时分秒,如果不放入具体的值,默认为00:00:00。
timestamp不往里面放入值的时候,默认的是当前时间,精确到时分秒。
下面的也是数据库中字段的属性及其取值范围
tinyint/smallint/mediumint/int/bigint 1B/2B/3B/4B/8B (占多少位,取值范围)
tinyblob/blob/mediumblob/longblob 255B/64K/16M/4G 图片音乐等二进制数据
text(存放大于65535个字符的数据)
tinytext/text/mediumtext/longtext 255B/64K/16M/4G 文本数据
Float 类型
float(6,2) 4个字节 6代表总长度,2代表小数点后面的位数,自己可以进行四舍五入
插入的数据不能超过6位,否则报错。
double(6,2) 8个字节
6.显示数据库中的所有表的信息
语句:mysql> show tables;
显示:
7.显示表user的定义信息
语句:mysql> show create table user;
显示:
还有一种查看表的定义信息的方式,个人比较偏好这种。
语句:mysql> desc user;
显示:
8.查看表中的具体信息
语句:mysql> select * from user;
对于新建的表,会显示:
9.向表中插入具体信息
语句:mysql> insert into user(id,name,password,age,birthday) values (1,'merry','123456
',22,'2013-04-26');
此时输入语句:mysql> select * from user;
显示:
输入语句多加入几条数据,以方便下面的操作。
加入的语句如下:
mysql> insert into user(id,name,password,age,birthday) values (2,'jack','111111'
,23,'2013-04-26');
mysql> insert into user(id,name,password,age,birthday) values (3,'kitty','222222
',21,'2013-04-26');
mysql> insert into user(id,name,password,age,birthday) values (3,'happy','333333
',20,'2013-04-26');
然后输入语句:mysql> select * from user;
显示:
10.更个表中的信息(将名字为happy的id改为4)
语句:mysql> update user set id=4 where name='happy';
再输入语句:mysql> select * from user;
显示:
id更改成功。
11.删除表中的某行信息
语句:mysql> delete from user where id=4;
再输入语句:mysql> select * from user;
显示
删除成功。
Delete from 与 truncate的区别:
Delete from:按行删除表中的所有记录,但会保留表,适合删除数据量不大的数据,可按条件删除。
Truncate:复制原表结构 ==> 一次性删除整表 ==>自动恢复原表结构,适合删除数据量较大的数据,不能按条件删除。
Drop table:删除表本身。
在这里加入删除表和数据库的语句:
删除表,语句:mysql> drop table user;
删除数据库,语句:mysql> drop database users;
12.动态向表中加入列
语句:mysql> alter table user add gender varchar(5); 向表中加入一个列名为gender的列。
输入语句:mysql> desc user;
显示:
再输入语句:mysql> select * from user;
显示:
改变gender的varchar的长度,并设置默认值为man,依据上图不设置的话默认值都是null。
语句:mysql> alter table user modify gender varchar(10) default 'man';
再输入:mysql> desc user;
显示:
将新增加的名为gender的列删除
语句:mysql> alter table user drop column gender;
再输入:mysql> desc user;
显示:
13.select语句的详细介绍
mysql> select * from user; 查询表中的所有信息。
显示:
mysql> select name from user; 查看具体列的信息。
mysql> select distinct name from user; 过滤表中的重复数据。(列中的数据有重复的则不显示)
mysql> select id+10 from user; 显示id+10 以后的id的值,列名为id+10
显示:
让列名仍为id,语句:mysql> select id+10 as id from user;
显示:
下面对语句做个介绍。
mysql> select name,math+english+chinese as 总分 from student; 显示名字和三列的总分。
mysql> select * from users where name=’yulu’; 显示名字为yulu的行信息。
mysql>select * from users where id>14;
mysql>select * from users where english between 80 and 90; 查询英语成绩在80到90之间的同学。
mysql>select * from users where english >=80 and/&& <=90; 这样也可以查询
其中的逻辑运算符 and &&
or ||
not !
查询特定分数的同学
mysql>select * from users where english=89 or english=90 or english=91;
或者
mysql>select * from users where english in(89,90,91); 不在的话就是 not in(89,90,91)
查询name列以李开头的成员的数据
mysql>select * from users where name like ‘李%’; %代表多个字符,_代表一个字符。
查询表中带null的数据
mysql>select * from users where name is null;
mysql>select * from users where name is not null; 不为空的
排序 order by 默认情况下为升序,order by 必须放置在最后。
排序 null值为最小
mysql>select * from users order by math asc; 按数学成绩进行升序排序,asc可加可不加,因为默认为升序。
mysql>select * from users order by math desc; 按数学成绩进行降序排序。
对姓李的学生按总分降序输出:
mysql> select name,math+english+chinese as 总分from users where name like ‘李%’ order by name,math+english+chinese desc;
Count函数
统计总人数:
Mysql> select count(*) as 总人数from student;
显示:
Mysql> select count(*) as 总人数from student where math>80;
Count(*) *可以变成具体的列名,统计具体列的个数,其中null不算。
Sum函数
Mysql> select sum(id) from student; 统计数学成绩的总和。不要统计非数值,如果统计非数值,返回0,不报错。
显示:id的总和
mysql> select sum(math) as 数学总分,sum(chinese) as 语文总分 from student;分别统计两科的总分。
mysql> select sum(math) + sum(chinese) as 总分 from student; 统计两科成绩的总和。
统计一个班语文成绩的平均分
mysql> select sum(chinese)/count(*) from student;
14.额外知识
备份数据库文件
语句:C:\Documents and Settings\Administrator>mysqldump -u root -p users>d:\users.sql (在数据库外面操作的语句不需要加;)
Enter password: ******
此时在d盘中出现了一个名为users.sql的文件。
然后在mysql中删除users数据库中的user;
恢复数据:
语句:source d:\users.sql (千万记住这里不加分号)