2404-mysql数据库笔记

DataBase-数据库
mariadb=mysql
https://doc.canglaoshi.org/

一、SQL(Structured Query Language)结构化查询语言

1、用于访问和处理数据库的标准计算机语言

2、语法特点

(1)SQL对关键字的大小写不敏感(windows)
(2)SQL语句可以单行书写,也可以多行书写,每行以分号结束
(3)SQL注释

3、mysql基本操作-ddl

(1)对数据库的常用操作

功能SQL
查看所有的数据库show databases;
创建数据库create database [if not exists] mydb1[charset = utf8];
切换(选择要操作的数据库)use mydb1;
查看当前所在库select database();
删除数据库drop database [if exists] mydb1;

(2)对数据库的常用操作-创建表

创建表格式:

create table [if not exists] 表名 (
 字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
 字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
 字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
) [表的一些设置]

注:
(1)常见的数据类型有:①数值类型;②日期和时间类型;③字符串类型;
①数值类型

类型大小用途
TINYINT1byte小整数值
INT或INTEGER4byte大整数值
DOUBLE8byte浮点数值

tinyint范围:[0,255]
int范围:[-2147483648,2147483647]

②字符串类型

类型大小用途
CHAR0-255byte定长字符串
VARCHAR0-65535变长字符串

③日期类型

类型大小格式用途
DATE3byteYYYY-MM-DD日期值
DATATIMESTAMP8byteYYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP4byteYYYYMMDDHHMMSS混合日期和时间值,时间戳

(2)如果是字符串类型,会有宽度的限制,宽度填多少就代表字符串有多长;
如果是数值类型,比如INT(1),1不代表数据的长度,如果插入了大于显示宽度的值,只要不超过该类型的取值范围,数值依然能够显示出来

(3)对表结构的常用操作

功能SQL
查看当前数据库的所有表show tables;
查看指定某个表的创建语句show create table 表名
查看表结构desc 表名;
删除表drop table 表名;

5、mysql数据库基本操作-DML

数据操作语言,用户对数据表中数据记录进行更新、删除、插入等操作
关键字:insert(插入)、delete(删除)、update(更新)

(1)数据插入

语法格式:
#向表中指定某些列插入数据
insert into 表名 (列名1,列名2,列名3...) values (1,2,3...)#向表中所有列插入数据
insert into 表名 values (1,2,3);

注:插入数据两种格式均可,SQL语句是以分号结尾,可以在一条insert语句中可以同时插入多个列表值,values只需要写一次,括号之间用逗号隔开

(2)数据修改update

语法格式:
#不带条件修改
update 表名 set 字段名 =,字段名1 =1...;

#带条件的修改
update 表名 set 字段名 =,字段名1 =1... where 条件;

(3)数据删除

语法格式:
delete from 表名 [where 条件];

truncate table 表名
或者truncate 表名

注:delete和truncate原理不同,delete只删除内容,而truncate则是将表摧毁并重建

6、mysql约束(constraint)

分类:
(1)主键约束(primary key) PK
(2)自增长约束(auto_increment)
(3)非空约束(not null)
(4)唯一性约束(unique)
(5)默认约束(default)
(6)零填充约束(zerofill)
(7)外键约束(foreign key) FK

(1)主键约束

可以加到某个列上,也可以加到多个列上

①概念

a.主键约束相当于唯一约束+非空约束的组合,即主键约束的列不允许重复,也不允许出现空值
b.每个表最多允许一个主键

②添加单列主键

a.在定义字段的同时指定主键

语法格式:
create table 表名(
   ...
   字段名 类型 primary key,
   ...
)

b.在定义完表字段之后指定主键

语法格式:
create table 表名 (
  ...,
  [constraint 约束名] primary key [字段名]
);

c.添加多列主键(联合主键)
联合主键:一张表中多个字段组成的,也是一个主键

语法格式:
create table 表名 (
  ...
  primary key (字段1,字段2,字段3...)
);

(2)自增长约束

语法格式:
create table 表名 (
   ...
   字段名 类型 auto_increment
);
①特点

a.auto_increment的初始值是1,每自增一条记录,字段值自动加1
b.一个表中只能有一个字段使用auto_increment
c.auto_increment约束的字段必须具备NOT NULL属性
d.支持的类型(TINYINT、SMALLINT、INT、BIGINT)等
e.如果最大值达到上限,auto_increment就会失效

②指定自增字段的初始值
方式1:创建表时指定
语法格式:
create table 表名 (
	...primary key auto_increment,
	...
) auto_increment = 10;
③delete和truncate区别

delete数据之后自增长从断点处开始
trucnate数据之后自增长从初始值开始

(3)非空约束(not null)

①添加非空约束
语法格式:
方式1:字段名 类型 not null

(4)唯一性约束

①添加唯一性约束
语法格式:
字段名 类型 unique

(5)默认约束

用来指定某列的默认值

①添加默认约束
格式:
字段名 类型 default 默认值;

(6)零填充约束

zero fill
①插入数据时,当该字段的值长度小于定义的长度时,会在该值的前面补上相应的0
②zero fill 默认为INT(10)

①添加零填充约束
语法格式:
creat table 表名 (
	字段名1 类型 zero fill,
	...
)

7、mysql基本操作-DQL

DQL:Data Query Language,数据查询语言

语法格式:
select 
	[all | distinct]
	<目标列的表达式1> [别名1],
	<目标列的表达式2> [别名2]...
from  <表名> [别名],<表名1> [别名1]...
[where <条件表达式>]
[group by <列名>]
[having <条件表达式>]
[order by <列名> [asc | desc] ]
[limit <数字或者列表>];

简化版语法

select *|列名 
from 表名
where 条件;

(1)运算符

①算术运算符
运算符说明
+加法
-减法
*乘法
/或DIV除法
%或MOD取模,求余
create database if not exists mydb1;

#创建员工表
create table if not exists emp(
 eid int(1) comment '员工编号',
 ename varchar(1) comment '员工姓名'
);

insert into emp VALUES 
(-2147483648,'A'),
(21333,'B');

select * from emp;

create table computer(
   brand char(3),
	 bid int(2),
	 product varchar(5)
);

insert into computer values ('华为',10,'中国深圳');

insert into computer values ('惠普',1001,'拉斯维加斯');

insert into computer values ('戴尔',2147483647,'美国');

show tables;

show create table emp;

desc emp;

drop table computer;

create table if not exists student (
 sid int comment '学号',
 name varchar(20) comment '姓名',
 gender varchar(20) comment '性别',
 age int comment '年龄',
 birth date comment '出生日期',
 address varchar(20) comment '家庭地址'
);

#向student表中sid,name,gender,birth字段添加数据
insert into student(sid,name,gender,age,birth)
values
(1001,'张三','男',20,'1994-12-01');

#向student表中所有字段添加数据
insert into student
VALUES
(1002,'赵敏','女',18,'1995-12-03','上海');

#向student表中所有字段添加多个数据
insert into student VALUES
(1003,'张三丰','男',88,'1918-08-13','北京'),
(1004,'张无忌','男',36,'1983-07-11','北京');

truncate student;


create table 表名(
   ...
   字段名 类型 primary key,
   ...
)

create table emp1(
  eid int primary key comment '编号',
	name varchar(20) comment '姓名',
	dept_id int comment '部门编号',
	salary double comment '工资'
);

insert into emp1 VALUES
(60051,'张三丰',5003,5000);

insert into emp1 (name,dept_id,salary) VALUES
('张三',8801,3600);

insert into emp1 VALUES
(60051,'王强',5005,8000.0);


create table 表名 (
  ...
  [constraint 约束名] primary key [字段名]
);

create table emp2 (
  eid int comment '编号',
	name varchar(20) comment '姓名',
	dept_id int comment '员工编号',
	salary double comment '薪资',
	primary key(eid)
);

insert into emp2 VALUES
(1001,'张安',10,6000),
(1002,'杰森',40,8000);


create table emp3 (
	name varchar(20) comment '姓名',
	dept_id int comment '部门编号',
	salary double comment '薪资',
	primary key(name,dept_id)
);

insert into emp3 VALUES
('111',10,5000),
('112',10,6000),
('113',10,7000),
('111',20,8000),
('112',30,9000);

insert into emp3 values 
('114',10,5000);

insert into emp3 values
('113',80,6000);

insert into emp3 values 
('111',10,10000);

insert into emp3 values
('113',80,20000);

create table 表名 (
   ...
   字段名 类型 auto_increment
);

create table t_user1 (
  id int primary key auto_increment,
	name varchar(20)
);

insert into t_user1 values
(NULL,'张三');

insert into t_user1 (name) VALUES
('李四');

create table 表名 (
	...primary key auto_increment,
	...
) auto_increment = 10;

create table t_user2(
	id int primary key auto_increment,
	name varchar(20)
) auto_increment = 100;

insert into t_user2 values
(NULL,'aaa'),
(NULL,'bbb');

create table t_user3 (
 id int primary key auto_increment,
 name varchar(20)
) auto_increment = 2147483647;

insert into t_user3 values (NULL,'ade');
insert into t_user3 values (NULL,'ddd');

create table t_user4 (
	id int primary key auto_increment,
	name varchar(20)
) auto_increment = 10;

insert into t_user4 values
(NULL,'aac'),
(NULL,'add');

delete from t_user4;

insert into t_user4 values
(NULL,'aae'),
(NULL,'aaf'),
(NULL,'aag');

truncate t_user4;

insert into t_user4 values
(NULL,'aac'),
(null,'aad');

create table t_user6 (
	id int,
	name varchar(20) not null,
	address varchar(20) not null
);

insert into t_user6 (id) values (1001);
insert into t_user6 (id,name,address) values (1001,
NULL,NULL);
insert into t_user6 (id,name,address) values (1001,
'NULL','NULL');
insert into t_user6 (id,name,address) values (1001,
'','');

create table t_user8 (
 id int,
 name varchar(20),
 phone_number varchar(20) unique
);

#测试唯一性约束
insert into t_user8 VALUES
(10,'aaa','13111112222');

insert into t_user8 values
(11,'aab','13111112222');

insert into t_user8 VALUES
(12,'aac',NULL);

insert into t_user8 values 
(13,'aad',NULL);

insert into t_user8 (id,name)
values (14,'aba');

create table t_user10 (
 id int,
 name varchar(20),
 address varchar(20) default '北京'
);

insert into t_user10 (id,name)
values (10,'aac'),(11,'ace');

create table t_user11(
	id INT zerofill,
	name varchar(20)
);

insert into t_user11 values
(31,'aac'),(32,'ddd');

create table product (
	pid int primary key auto_increment comment '编号',
	pname varchar(20) comment '名称',
	price double comment '价格',
	category_id varchar(20) comment '分类编号'
);

insert into product VALUES
(null,'海尔洗衣机',5000,'c001'),
(null,'美的空调',2000,'c001'),
(null,'格力空调',5000,'c001'),
(null,'九阳电饭煲',5000,'c001'),
(null,'啄木鸟衬衣',300,'c002'),
(null,'恒源祥西裤',800,'c002'),
(null,'花花公子夹克',440,'c002'),
(null,'海澜之家卫衣',180,'c002'),
(null,'兰蔻面霜',300,'c003'),
(null,'雅诗兰黛精华水',200,'c003'),
(null,'香奈儿香水',350,'c003'),
(null,'SK-II神仙水',350,'c003'),
(null,'资生堂粉底液',180,'c003'),
(null,'老北京方便面',18,'c004'),
(null,'良品铺子海带',17,'c004'),
(null,'三只松鼠坚果',88,null);

select 5+2;
select 5-2;
select 5*2;
select 5/2;

select 5 DIV 2;

#大取小,求余数
select 5%2;
select 5 MOD 2;

#小取大,直接得到最小的那个数
select 2%5;
select 2 MOD 5;

#将每件商品的价格加10
select pname,price,price + 10 as new_price from product;

#将所有商品的价格上调10%
select pname,price*1.1 as new_price from product;
select pname,price+price * 0.1 as new_price from product;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值