CREATE TABLE表名(
字段1 数据类型 约束,
字段2 数据类型 约束,
...
字段n 数据类型 约束
);
CREATE TABLE STUDENT(
Sid int primary key,
Sname varchar(20) nor null,
Ssex char(1),
Sage int
);
not null:
unique:
primary key
foreign key
check
NOT null
CREATE TABLR TEMP(
id int noy null,
name varchar(255) not null default ‘abc‘,
sex char null
);
Unique
cretate table temp(
id int not null, d
name varchar(25),
password varchar(16),
constraint uk_name_pwd unique(name)
);
primary key
cretate table temp(
id int primary key,
name varchar(25),
password varchar(16)
);
设置主键自增:auto_increment
create table temp(
id int auto_increment primary key,
name varchar(25),
password varchar(16)
);
foreign key:
建立在两表或多张表中的关联关系,以保证数据完整性
注意:1.子表参照的值必须在主表被参照字段的值的范围内
2.如果主表中有值被参照,那么主表中的相应记录不能被删除
3.子表的外键参照的列只能是主表的主键列或唯一约束的列
create table student(
sid int primary key auto_increment,
sname varchar(20),
scid int,
--foreign key(scid)references class(cid)engine=innodb;
drop tablr student;
drop table class;
语法1: FOREIGN KEY (外键字段) REFERENCES 主表(主键字段);
语法2: CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES 主表(主键字段);
(外键名:fk_字段名)
---------------------------
ENGINE : 引擎
mysql所特有一种数据存储机制
Check(MySQL数据库中,没有作用)
create table student(
sid int primary key,
sname varchar(20) not null,
ssex char(1),
sage int check(sage<19)
);
建表后操作表表结构:
查看表结构:
desc 表名:
mysql> desc student;
修改类型:
alter table 表名 modify 列名 目标类型;
mysql> alter table student modify sid varchar(10);
增加列:
alter table 表名 add 列名 类型;
mysql> alter table student add sage int;
删除列:
alter table 表名 drop 列名;
mysql> alter table student drop sname;
修改列名:
alter TABLE 表名 CHANGE 旧列名 新列名 类型;
mysql> alter table student change aaa bbb int;
修改表名:
语法1:
alter table 表名 rename 新表名;
语法2:
rename table 旧表名 to 新表名;
mysql> alter table student rename stu;
mysql> rename table student to stu;
2、MySQL图形化工具使用
使用Navicat连接我们的数据库:
点击连接
主机名或IP地址:就是数据库安装电脑的电脑名或IP地址 localhost、127.0.0.1
端口:就是MySQL安装时候的默认端口 3306
用户名:MySql安装的默认用户名 root
密码:MySQL安装时你指定的密码: root
连接名:只是一个名字而已,作用是让我们知道是什么业务的数据库
完成以上几个信息的配置,点击确定:
点击J18这个数据库连接
展示 全部的数据库;
几个数据库都是可以点击的,点击之后进入对应的数据库;
暂时我们只 注意 表、查询、备份
点击表之后,把该数据库下面的所有表全部展示出来:
点击查询:
新建查询
该操作面板就可以 写 insert delete update create select 等等语句;
点击备份:
该页面主要是对数据库的备份、恢复操作。
3、数据操作语句
Create table stu(
Sid int primary key,
Sname varchar(20) not null,
Sage int ,
Ssex char(2)
);
-- ----------------------------
-- Records of stu
-- ----------------------------
INSERT INTO `stu` VALUES (‘1‘, ‘李林‘, ‘23‘, ‘男‘);
INSERT INTO `stu` VALUES (‘2‘, ‘李林‘, ‘23‘, ‘男‘);
INSERT INTO `stu` VALUES (‘3‘, ‘李林‘, ‘23‘, ‘男‘);
INSERT INTO `stu` VALUES (‘4‘, ‘李林‘, ‘23‘, ‘男‘);
INSERT INTO `stu` VALUES (‘5‘, ‘李林‘, ‘23‘, ‘男‘);
INSERT INTO `stu` VALUES (‘6‘, ‘李林‘, ‘23‘, ‘女‘);
INSERT INTO `stu` VALUES (‘7‘, ‘李林‘, ‘23‘, ‘女‘);
INSERT INTO `stu` VALUES (‘8‘, ‘李林‘, ‘23‘, ‘女‘);
INSERT INTO `stu` VALUES (‘9‘, ‘李林‘, ‘23‘, ‘女‘);
新增
Insert into 表名(列名1, 列名2, 列名3...)values(列名1值,列名2值, 列名3值.)
两种新增数据的方式
Insert into stu(sid,sname,sage)values(1,’李林’,22);
Insert into stu values(1,’李林’,22);
删除
Delete from 表名
Delete from stu;
修改
Update 表名 set 列名1=修改的值,列名2=修改的值;
update stu SET sage=23,sname=‘李琳‘;
4、数据查询语句
SELECT查询内容
FROM 表名
WHERE条件
GROUP BY
HAVING
ORDER BY
查询全部数据
Select * from 表名;
Select * from stu;
根据插件查询指定的数据
Select * from 表名 where 列名1=值 and 列名2=至...
Select * from stu where sid=9 and ssex=‘女‘;
查询数据,返回指定的列
Select 列名1,列名2 from 表名;
Select sid,sname from stu;
给指定返回列取别名(小名)
两种方式:
Select 列名 别名,列名2 别名2... from 表名;
Select 列名 as 别名,列名2 as 别名2... from 表名;
Select sid 学号,sname 姓名,ssex 性别 from stu;
Select sid as 学号,sname as 姓名,ssex as 性别 from stu;
在条件中使用比较运算符
SELECT * FROM 表名 where 字段 > < >= <= !=或<>
select * from j18 where xsnianling !=18
多条件的查询:
AND OR NOT
select * from j18 where xsnianling <=21 and xsxingbie=‘女‘
select * from j18 where xsnianling <21 or xsxingbie=‘女‘
select * from j18 where xsnianling not in(18,21,25)
对空值的查询:is null 对应列是否null查询
select * from j18 where xsxueli is not null
select * from j18 where xsxueli is null
BETWEEN A AND B 在A和B之间,包含AB的值
select * from j18 where xsnianling BETWEEN 18 and 21
IN
select * from j18 where xsnianling in(18,21,25)
模糊查询 LIKE
%:指代不明确值的位置或长度
_:指代明确值的位置或已知字符串长度
select * from j18 where xsxingming like ‘_灵%‘
查询中使用算术表达式:+ - * /
select xsxuehao+xsnianling from j18 where xsxingming like ‘_灵%‘
处理重复值:DISTINCT 排除重复展示,只展示一次
select DISTINCT xsxingbie from j18;
查询返回限定行数:LIMIT
Limit 10 取查询数据的前10位
Limit 10,10 从查询数据的第11位开始,向后取10位数据展示,不满足10位也不会报错
通过查询复制表
create table stu1 select * from stu;
--只复制结构
create table stu2 select * from stu where 1=2;
分组 group by
select ssex,COUNT(*) from stu GROUP BY ssex
分组使用的时候,,group by 字段,一定要在 select 后面出现,如果使用了group by select 后面就不要出现 *
排序 order by 字段名 :字段名就是我们需要排序的字段
order by xsnianling 升序 默认
order by xsnianling desc 降序
常用函数
得到需要查询字符的ASCII码
SELECT ASCII(‘中‘);
SELECT CHAR(97);
根据字符集查询得到字符串的长度
SELECT CHAR_LENGTH("中国");
SELECT CHAR_LENGTH(sname) FROM student;
--utf8编码下,一个中文字占3个字符长度
SELECT LENGTH("中");
--拼接字符串
SELECT CONCAT(‘My‘, ‘S‘, ‘QL‘);
SELECT CONCAT(sname,sage) FROM student;
SELECT sname,sage FROM student;
--大写转小写
SELECT LOWER("ABC");
--小写转大写
SELECT UPPER("abc");
--查询学生表中所有学生姓名的最后一个字
SELECT RIGHT(sname,1) FROM student;
--查询学生表中所有学生姓什么
SELECT LEFT(sname,1) from student;
SELECT FLOOR(4.9);
----------------------------
--查询得到本地时间
SELECT NOW();
CREATE TABLE teset(
tid int PRIMARY KEY auto_increment,
ttime datetime
);
SELECT * FROM teset;
INSERT INTO teset(ttime) values (NOW());
SELECT CURDATE(),CURTIME();
SELECT CURTIME();
聚合函数:
COUNT 统计数量:select count(xsnianling) from j18
SUM 求和:select sum(xsnianling) from j18
MAX 求最大值:select max(xsnianling) from j18
MIN 求最小值:select min(xsnianling) from j18
AVG 平均数:select avg(xsnianling) from j18