MySQL

本文详细介绍了MySQL数据库的使用,包括如何打开数据库、DDL(数据定义语言)、DML(数据操作语言)和DCL(数据控制语言)。内容涵盖创建、删除和修改数据库及表,字段属性、数据类型和权限管理等。

打开数据库

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)联合查询  union(去重)   union all(显示所有结果不去重)

        1.全体的师生信息

           select sid,name,age,sex from stu

           union all

           select tid,tname,tage,tsex from teach;

        聚合函数  SUM  COUNT

        时间类型   date  time  datetime  时间戳

 

 

 

 

 

 

 

 

 

 

DCL:数据控制语言

自由存取控制:由管理员给普通用户分配权限

强制存取控制:划分等级

    权限管理

管理员权限下:

        create user "cy1706"@localhost identified by "123";//新建一个用户,没有任何权限

         mysql>exit;

    mysql -u cy1706 -p

   123; //进入这个普通用户

 

   

1.授权 grant

     管理员权限下

        grant select on CY1706.* to cy1706;//让用户cy1706对CY1706数据库的所有查询权限

grant select,insert,update,delete,create on [数据库名称].* to [用户名称];–用户授权数据库
*代表整个数据库 

  2.回收权限 revoke

        revoke select on CY1706.* from cy1706;//回收权限

       

        反祖

        root==> u1 ==>  u2  ==> u3;

u3不能回收u2的权限

           redo.log   undo.log

 

 

 总结:     

DDL create drop alter show

DML insert delete update select

DCL grant  revoke

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值