大家好,欢迎来到IT知识分享网。
一.
登陆数据库MySQL -u root -p
启动数据库:net strat mysql
关闭数据库:net stop mysql
创建数据库:create DATABASE 数据库名;
指定字符集与校对规则:
create DATABASE 数据库名
dffault character set 字符集名
collate 校对规则名;
修改数据库(一般为修改字符集与校对规则):
ALTER DATABASE 数据库名
dffault character set 新字符集名
collate 新校对规则名;
删除数据库:drop DATABASE 数据库名;
查看数据库:SHOW DATABASES
选择数据库 :use 数据库名
创建表:create TABLE 表名(id int(10))
创建表并输入内容:
CREATE TABLE 表名(
name varchar(20) not null,
gender varchar(5),
age int,
password varchar(32)
);
删除表:drop TABLE 表名;
修改表名:alter table 旧表名 rename 新表名;(ALTER改变的意思)
查看表的内容:desc 表名;
修改表字段(列名):ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;
修改表中的字段数据类型:ALTER TABLE 表名 MODIFY 字段名 新数据类型 ;(modify修改)
在表中添加一列:alter table 表名 add 字段名 字段数据类型 after 已存在字段名;
改变表列的位置:alter table 表名 modify 字段名 字段数据类型 after 已存在字段名;
删除表中列:alter table 表名 drop 字段名;
给表中列输入数据:insert into 表名(列名,列名……) value(内容,内容……)
主键:primary key(字段名)/primary key
替代键:unique(列名)
添加主键/替代键:ALTER TABLE 表名
add primapy key 索引方式(列名/字段名)
add unique 索引方式(列名);
删除主键/替代键:ALTER TABLE 表名
drop primapy key 索引方式
drop unique 索引方式;
改表中数据
update 表
set 列= 新内容
where 指定列
删除;delete from 表名 where 条件
二.
1.group by
用于数据分组,根据指定列进行分组
例.按照性别统计reader人数
SELECT sex ,COUNT(1) FROM reader GROUP BY sex
2.order by 用于排序(默认升序排序),追加desc 为降序排序(从大到小)
例.SELECT * FROM book ORDER BY price DESC
3.替换列中内容/增加列并添加内容
case
when 条件1 then 结果1
when 条件2 then 结果2
else 结果n
end as 新列名
4.子查询in
in( 一个定值是否在子查询中 )
比较子查询 all :外层值必须全部满足内层值才输出 例如: c>all(b) c列中的值必须大于b的集合中的最大值,才能够输出
any一个条件满足即可输出 例如:c>any(b) c集合的值只要有一个大于b集合的值即可输出大于的值
补:exists (与in用法类似)
- 如果查询的两个表大小相当,那么用 EXISTS 和 IN 差别不大
- 如果两个表中一个较小,一个是大表,则子查询表大的用 EXISTS,子查询表小的用 IN
- exists 返回值类型为bool
- exists左侧没有数组
例如:查询借过数用户信息
SELECT *FROM reader WHERE EXISTS (SELECT rno FROM borrow WHERE reader.rno=borrow.rno AND rdate is NOT NULL)
5.聚合函数
count(1)/count(*)/count(列)查询列的行数(非null)
max()与min()最大值与最小值
sum()总数
avg()平均数
三.视图
1.创建视图
create (or replace ) view as select语句 (with check option )
注解:指定 or replace 语句可以替代已存在同名视图
指定with check option创建视图必须满足查询语句where限制条件
2.查询视图
与表查询相同
3.插入数据
insert into 视图 values(内容1,内容2,内容3,……内容n)
4.修改数据
update 视图
set 列=‘新内容’
(where 限制条件)
5.删除数据(一行数据)
delete from 视图 where 指定条件
6.修改视图定义(对已有视图的定义进行修改) alter view 视图 as select 语句 (with check option ) 7.删除视图 drop view 视图; 四.存储过程 1.创建存储过程 create procedure 名称( in/out 变量 类型 ) begin select语句end;
例如:
(1)CREATE PROCEDURE pr_book (in name VARCHAR(10) )
BEGIN
SELECT * FROM book WHERE bname =name;
END;
(2)
delimiter $$
mysql> CREATE PROCEDURE wws(in jg1 VARCHAR(10) ,IN jg2 VARCHAR(10),OUT bj varchar(3))
-> BEGIN
-> DECLARE bb1 ,bb2 DECIMAL(10,2);
-> SELECT price INTO bb1 FROM book WHERE bname =jg1 ;
-> SELECT price INTO bb2 FROM book WHERE bname=jg2;
-> IF bb1>bb2 THEN SET bj= ‘大于’;
-> ELSE
-> SET bj =’小于’;
-> END if;
-> END $$
2.修改结束符号
格式:delimiter ##
例如:delimiter ##
CREATE PROCEDURE pr_book (in name VARCHAR(10) )
BEGIN
SELECT * FROM book WHERE bname =name;
END ##
delimiter ;
3.储存过程体
(1)declare
语法格式:declare 变量名 数据类型
(2)select—— into
语法格式:select 列名 into 变量名
4.显示存储过程
show PROCEDURE status;(全部)
show create PROCEDURE 名称;(单个)
5.调用存储过程
call 名称 (参数,…..)
例如:(1)call pr_book(‘数据库编程’)
(2) call wws(‘数据库编程’,’世界地图’,@bj)$$ //定义out 输出 , 在调用存储过程时要在名称前加@
select @bj;
五.创建和调用存储函数
1.创建存储函数
语法格式:
create function 存储函数名 (参数 类型,……)
returns 类型 //声明函数返回值的数据类型
deterministic
begin
return( select 语句/结果);
end;
例如:(存储过程+存储函数+if语句)
delimiter $$
create function cc(name varchar(10))
returns char(4)
DETERMINISTIC
BEGIN
declare jg decimal(10,2); //一定要有,先放置select语句获取到的price
select price into jg from book where bname=name;
if jg >50
then return ‘yes’;
else return ‘no’;
END IF;
END $$
2.调用存储过程
格式:select 存储过程名 (参数,……);
例如:
SELECT cc(‘数据库编程’);
六.补充
1.decimal(10,2)中的“2”表示小数部分的位数,如果插入的值未指定小数部分或者小数部分不足两位则会自动补到2位小数,若插入的值小数部分超过了2为则会发生截断,截取前2位小数。
“10”指的是整数部分加小数部分的总长度,也即插入的数字整数部分不能超过“10-2”位,否则不能成功插入,会报超出范围的错误。
2。存储过程与存储函数用到if语句时
存储过程then后面set输出结果,且结果要提前在create procedure 名称( in/out 变量 类型 )中out定义
存储函数return输出结果
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/34557.html