打开数据库
service mysqld start // 开启mysql服务端
mysql -u roou -p //客户端开启并连接服务器
//输入密码
MySQL语言一共分为四大类
DDL:数据定义语言(Data Definition Language)
操作对象:数据库/表
关键字:create(创建) drop(删除) alter(修改) show(查看)
举个栗子:
create database yyy; //创建一个名为yyy的数据库
use xxx; //表示使用xxx这个数据库,也即是切换数据库
drop database yyy; //删除
drop table yyy;//删除表yyy
那末创建表
这是我犯的一个错误,原因也在图中
那末我们应该怎末创建一个表呢,我们创建的表必须是有大于等于1个字段的(也即是属性)
比如我们创建一个学生表,里面的属性有姓名(name)性别(sex) 年龄(age)学号(id)
此时我们应该像这样加上属性,属性的名字我们一般要用英文,然后确定属性的类型
解释一下这个创建过程,首先stu1是表名字
我们把表的字段写成英文就是id name age sex 字段名字后面跟的是字段的类型,那末id的类型 应该是字符型,我们用varchar
为什莫不用char,等会解释,再说一下性别sex后面的类型,enum是枚举类型,default 为默认的意思,也即是说表中的sex属性默认为 man,,接着我们会看到每一个属性的后面都有一个COMMENT"xxxx",,这个是为了方便以后维护表,给每一个字段后面加的注释。
create table stu1
(
id varchar(10) primary key COMMENT "学生学号",
name varchar(10) not null COMMENT "学生姓名",
age int not null COMMENT"学生年龄",
sex enum("man","woman") default "man" COMMENT "学生性别"
);
接着来说一下字段属性:
PRIMARY KEY : 标示该属性为该表的主键,可以唯一的标示对应的元组
FOREIGN KEY : 标示该属性为该表的外键,是与之联系的某表的主键
NOT NULL : 标示该属性不能为空
UNIQUE : 标示该属性不能为空
AUTO_INCREMENT : 标示该属性的值自动增长
DEFAULT : 为该属性设置默认值
再来看一下字段类型都有哪些
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
数值类型
字符串
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
char和varchar:
1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。
3.char类型的字符串检索速度要比varchar类型的快。
varchar和text:
1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。
2.text类型不能有默认值。
3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。
时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
二进制
布尔:bit
bit 表示1个二进制的位
bit(8) 表示8个二进制的位
性别可以定义为0,1, 而不使用male或female字符串
数据逻辑删除
某辆车在车库中停放的状态
所有基于两种状态的数据都可以使用0,1来存储.
修改表:
(1).修改字段类型
alter table stu1 modify name varchar(20);
(2).修改字段名称change
alter table stu1 change id sid carchar(10);
(3)添加新字段 add first|after
alter table stu1 add score float;
alter table stu1 add score float after sid;//再学号的后面添加一个类型为浮点型的成绩字段
(4)删除一个字段 drop
alter table stu1 drop score;
(5)修改表名 rename
alter table stu1 rename stu2;
查看表
(1)show create table tbname;//查看表的详细信息
(2)desc tbname //查看表的字段信息
DML:数据操作语言
insert,delete,update,select
1.insert 插入数据
插入全部字段属性:
insert into stu1 values("001","zhangsan",19,"man");
插入个别字段:
insert into stu1(sid,name,age,sex) values("001","zhangsan","man");
stu2(如果不写,默认为全部字段)
小批量插入:
insert into stu1 vlaues("001","zhangsan",19,"man"),
("002","lisi",20,"woman"),
("003","wangwu",21,"man"),
("004","zhaoliu",33,"man");
大批量插入数据:
2.删除数据:
delete from stu where name="zhangsan";
delete from stu;//删除表中所有数据,没有条件,,默认所有
3.修改数据
update stu set age =19;//表中所有的age都改为19;
update stu set age =19 where id="001";//把id=1的字段的年龄改为19;
4.查看数据 select
(1)普通查询
select*from stu;
select *from stu where id="001";
select sid,name,age,sex form stu;
(尽量不要用*,,用哪个字段就查找哪个字段,数据查询过程中可能会被盗取,为了保护数据安全)
(2)去重查询 distinct
查询一亿用户的年龄范围,这时可以用去重查询
select distinct age from stu;
(3)排序查询 order by asc |desc(降序)
select distinct age from stu order by age asc;//升序
(4)分组查询 group by
(5)等值查询
查询年龄未满十八周岁的学生的不及格成绩
select name score form stu where age<18 and score<60;
(6)连接查询
外连接
左连接查询
(select name,score from (select sid,name from stu where age<18) a
left jion(select sid,score from result where score<60) b on a.sid=b.sid
where score is not null) c1;
右连接查询
全连接查询
内链接查询
(7)联合查询
DCL:数据控制语言