首页 > 代码库 > MySQL补充

MySQL补充

MySQL补充

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地址  localhost127.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

MySQL补充