1. 启动服务:net start mysql
2. 登录用户 mysql –u root –p
3. 修改密码 :use mysql
Update user setpassword=password(‘新的密码’) where user=’用户名’;
Flush privileges;刷新权限
4. 创建用户:create user'newuserzhou'@'host' identified by'123456';
Flush privileges; 刷新权限
5. 创建新的数据库:create database 数据库名;
6. 将数据库的所有权限授给用户:grant all privileges on 数据库名.* to 用户名@localhost identified by '密码';
Flush privileges; 刷新权限
7. 查看帮助菜单:help;或\h;
8. 查看数据库:show database;
9. 创建表:create table 表明(字段名 类型 [主键primary key,是否为空not null],xxxx);
10. 添加外键:foreign key(字段) reference 表(字段)
11. 级联删除foreign key(字段) reference 表(字段) on delete cascade;
12. 往表中添加字段:alter table 表 add 字段名 类型;
13. 改变字段类型:alter table 表 modify column 字段名 新类型;
14. 删除字段:alter table 表 drop 字段名;
15. 添加数据:insert into 表(字段1,字段2……)values(‘xxx’,’xxxx’,……),(‘数据2’,’xxx’…..);
16. 更新表(修改表):update 表名 set xxxx where xxxxx;
Mysql的数据表达式
1. 计算数字表达式:select 数学表达式(可以多个,用逗号隔开);
(例如:select 194*142;)计算乘积
2. select语句 (\n表示回车)
3. 获得现在使用的mysql版本:select @@version;
4. 获得系统当前时间: select sysdate(); (有年月日)或selectnow();
5. 获得当前时间:select current_time;(无年月日)
6. 比较apple和Apple是否相等 select ‘apple’=’Apple’;
7. 返回一组数字中的最大值:select greatest(xx,xx,xx);
8. 返回一组数字中的最小值:select least(xx,xx,xx);
9. 返回平方根:select sqrt (数字);
10. 返回字母A的ASCII码值select ASCII(‘A’);
11. 用K替换Welcom中的o字符 : select replace(‘welcome’,’o’,’k’);
12. 得到2017年1月8号是2017年的第几周:select week(‘2017-01-08’);
13. 计算2008-01-20在22天后日期是多少:selectdate_sub(‘2008-01-20’,interval -22 day);
14. 将now()函数得到的系统时间进行格式化,得到17-09-14 这个日期。(date_format):select date_format(now(),’%y-%m-%d’);
查询数据库并创建相应视图
1. 查询表中的所有数据:select * from 表名;
2. 查询年龄在17-19岁之间的学生姓名及年龄:select Sname,Sage from Student where Sage>=17 andSage<=19;
3. 统计数据总数:Select count(*) from 表名;
4. 查询数据:select 字段名 from 表名 where 条件;
5. 查询所有姓“王”的学生的信息 select 字段名 from 表名 where sname like “王%”;
6.子查询:查询与“李勇”在同一个系的学生的姓名和所在系
Select sname,sdept fromstudent where sdept in(select sdept from student where sname=”李勇”);
6. 连接查询:查询选修了 3 号课程且成绩在 85分以上的学生的学号、姓名。 Select sno,sname from student joinsc on Suden.Sno=sc.Sno where sc.cno=”3” && sc.grade>85;
7. Distinct 去除相同的数据
8. Group by分组查找:查找student 中男生和女生的人数 :select count(ssex) from studentgroup by ssex;
9. Order by 顺序DESC:降序排列
ASC :升序
查询学生学号及其成绩,结果按降序排列
Select sno,grade from sc order by grade desc;
10. 创建数据库上的视图:create view 视图名 AS
Select 字段名 from 表名;
11. 查看视图中的数据:select 字段 from视图名 where 条件;
12. 在视图中插入数据:insert into 视图名 values(数据);
13. 修改视图数据:update 视图名 set 修改内容 where 条件;
14. 删除视图数据:delete from 视图名where 条件;
15. 删除视图:drop view 视图名;
编辑数据库
1. 字段说明:比如sno叫“学生编号”
Sno varchar(10) comment ‘学生编号’;
2. 字段改名:alter table 表名change 旧字段名 新字段名 类型 [是否为空];
3. 按字段1升序,字段2降序建立索引:create index 索引名 on 表名(字段 ASC,字段2 DESC);
4. 删除索引:drop index 索引名 on 表名;
5. 修改表名:alter table 旧表名rename 新表名;
6. 选择平均成绩:select avg(成绩);
7. 选择总和成绩:select sum(成绩);
8. 联合查询注意:select 表1.字段名,表2.字段名 from 表1,表2 where 条件;
9. 成绩为空:score is null
10. limit 范围语句:select 字段名 from 表名 limit ?,?;
注:第一个问号是开始查询的位置(不包括),第二个问号是结束查询的位置(包括)。例如:limit 2,5 查询从第三个学生到第五个的信息。
11. 字段另命名:select 字段 as ‘显示内容’ from 表 where 条件;
索引的创建和使用
1. 修改结束符:delimiter 新结束符
2. 创建一个插入十万条数据的函数
3. 创建一个聚簇索引 并且升序存放
CREATE CLUSTERED INDEX fact_idx
ON Salary (fact );
存储过程(delimiter $$)
1. 创建存储过程(以显示学生数量为例)
CREATE PROCEDURE TEST(OUT number1 INTEGER)BEGIN
DECLARE number2 INTEGER;
SET number2=(SELECT COUNT(*) FROM student);
SET number1=number2;
END $$
CALL TEST(@number1)$$
SELECT @number1$$
2. 声明输入 : in sno1 varchar(9)
输出 : out cp integer
比较: if sage1>sage2 then set cp=0;
else setcp=1;
end if;
输入时的调用:CALL 过程名(’96001’);
输出:CALL 名(@cp);
3. 游标 declare yb_1 cursor for select ……
open yb_1;
fetch yb_1 into a1;
set str……
close yb_1;
end$$
4. 删除存储过程:drop procedure test$$
触发器
1. 创建:CREATE TRIGGER 名<after|before>
<insert|update|delete(replace)>on 表名 for each row
begin
end$$
2. begin end 里的语句
1) 删除:deletefrom score where sno=old.sno;
替换:repalce into course1 select * from course;
更新:update 表名 set 字段=新字段;
2)是否低于问题
ifnew.income<4000 then set nw.income=4000;
end if;
3)更新总成绩(添加和删除数据)
declare newscorechar(10);
select sum(score) intonewscore from score where sno=’96001’;
update sum_scoreset sumscore=new score;