MYSQL:
数据库
存储数据的仓库
数据
数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。在计算机系统中,数据以二进制信息单元0,1的形式表示。
数据库的作用
方便数据的存储和管理。
登录数据库
mysqld --skip-grant-tables
储存数据流程
(1)创建数据库:
create database 数据库名
命名规则:school school_db 不能重名
查看已经创建好的数据库:
show databases;
删除数据库
drop database 数据库名;
(2)use 数据库名;
(3)创建二维表
create table 表名 (
属性名1 数据类型 完整性约束(可以没有的),
属性名2 数据类型 完整性约束,
属性名3 数据类型 完整性约束,
…
属性名N 数据类型 完整性约束
);
查看表
show tables;
查看单个表的结构
show create table 表名;
删除表
drop table 表名;
插入语句
(1)属性不可缺省方式:
test_user(id int ,name varchar(20),age int)
insert into(into可以不写) 表名 values(属性值1,属性值2,属性值3,属性值4…);
insert test_user values (1,‘zhangSan’,15);
insert test_user values (2,‘liSi’);错
(2)属性可缺省方式:
insert into(into可以不写) 表名 (属性1,属性2,属性3,属性4…)
values(属性值1,属性值2,属性值3,属性值4…);
insert test_user(id,name) values (2,‘liSi’);
字符串类型 日期时间 加 ‘’ ‘Bob’ ‘1990’
varchar:存储数据时
(1)根据插入的数据进行计算 size
(2)开辟size+1个空间然后
(3)将数据存储进去
主键
通过主键推出其他的所有属性的值。
如果不满足上述条件说明主键设置的有问题。
一个表只能有一个主键
范式
1.第一范式(1NF) 每一列保持原子特性
2.第二范式(2NF) 非主属性完全依赖于主键
3.第三范式属性不依赖于其它非主属性(消除依赖传递)
删除语句
语法:delete from 表名 where 筛选条件;
外键
多张表之间的约束
父表 子表
外键建在哪个表中哪个表就成为子表 references 后面跟的是父表
创建外键的原则
只能将父表中的主键设置位外键
创建外键的作用
保证数据一致性
创建表的顺序
先创建父表 再创建子表
删除顺序的限制
先删除子表,后删除父表
进行表中的一些属性操作
(1):设置主键: primary key; 主键是唯一切不重复的
(2):设置外键: primary key;
(3):设置不为空: not null;
(4):设置属性唯一: unique ;
(5):设置属性自增: auto_increment;
(6):设置属性默认值:default;
子查询
子查询:是将一个查询语句嵌套在另外一个查询语句当中。内层查询的结果可以为外层查询提供查询条件
子查询的语法
select 属性列表 from 表1 where 连接方式 (select 属性列表 from 表2 where 刷选条件);
where之后+ 筛选条件/查询条件
连接方式:in 、not in、exists not exists、 比较运算符、 比较运算符和any/all的结合
例:
A : id :33 40 54 66 67 70 78 90
B : id :33 40 89 78 70 90 109 108
in / not in
select * from A where id in (select id from B where id > 70);
select * from A where id in (89 78 90 109 108);
78 90
select * from A where id not in (select id from B where id > 70);
select * from A where id not in (89 78 90 109 108);
33 40 54 66 67 70
比较运算符:
select * from 表名 where 属性 =>< (select 属性 from 另一个表名 where 属性条件);
特定词语
1.Like:代表任意数量的字符;:
select *from 表名 where 属性 like ‘%A’;尾部
select *from 表名 where 属性 like ‘%A%’;中间位置
select *from 表名 where 属性 like ‘A%’;头部;
_代表一个数量
2.order by 属性名: 表示查询出的数据按照属性进行排序;
3.between 介于两者之间;
4.group by :按照某个属性进行分组
5.update(修改) 表名 set 属性=’?’ where 属性=?;
例:update student set name=张三 where id=2 //修改学生表中id=2的名字为张三
6.select(查询)
select 属性名1,属性名2…from 表名 where 筛选条件;
更改编码形式和储存引擎
方法一:创建表的时候指定编码形式和
// 改变整张表的编码
mysql> CREATE TABLE stu_test
(
-> id
int(11) NOT NULL,
-> name
varchar(10) DEFAULT NULL,
-> sex enum(‘男’,‘女’),
-> PRIMARY KEY (id
)
-> ) CHARSET=utf8;
Query OK, 0 rows affected (0.04 sec)
方法二:
CREATE TABLE student_tb2
(
Sname
varchar(10) CHARACTER SET utf8
);
在数据类型之后 + CHARACTER SET 编码
方法三:
还有一种方式是通过改变mysql编码的形式,是通过改变Mysql的配置文件,改变下面红框圈出来的为utf-8,记得操作之后一定要重新启动Mysql服务,需要新建数据库老的数据库还是之前的编码。
方法四:
如果定义的字符串类型想使用utf8编码,在定义的时候不适用char或者varchar来定义而是使用nchar或者nvarchar
例:
create table user(id int ,name nvarchar(10)));
create table user(id int,sex nchar(2));
方法五:
create table sex_tb2(
Ssex enum(‘m’,‘w’)
);
alter table sex_tb2 modify Ssex enum(‘男’,‘女’) character set utf8;