MySQL

打开数据库

service mysqld start // 开启mysql服务端

 

mysql -u roou -p  //客户端开启并连接服务器

//输入密码

MySQL

MySQL语言一共分为四大类

DDL:数据定义语言(Data Definition Language)

操作对象:数据库/表

关键字:create(创建)  drop(删除)  alter(修改) show(查看)

举个栗子:

 

 

create database yyy;  //创建一个名为yyy的数据库

use xxx; //表示使用xxx这个数据库,也即是切换数据库

drop database yyy; //删除

drop table yyy;//删除表yyy

那末创建表

MySQL

这是我犯的一个错误,原因也在图中

那末我们应该怎末创建一个表呢,我们创建的表必须是有大于等于1个字段的(也即是属性)

 

      

 

比如我们创建一个学生表,里面的属性有姓名(name)性别(sex) 年龄(age)学号(id)

此时我们应该像这样加上属性,属性的名字我们一般要用英文,然后确定属性的类型

MySQL

解释一下这个创建过程,首先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支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

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的索引似乎不起作用。

MySQL

时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

MySQL

二进制 

布尔:bit
bit 表示1个二进制的位
bit(8) 表示8个二进制的位
性别可以定义为0,1, 而不使用male或female字符串
数据逻辑删除
某辆车在车库中停放的状态
所有基于两种状态的数据都可以使用0,1来存储.

 

修改表:

(1).修改字段类型

alter table stu1 modify name varchar(20);

MySQL

MySQL

(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:数据控制语言

 

 

上一篇:快速排序--按姓名


下一篇:Python面向对象之对象的绑定方法