mysql命令
一、MySql常用命令
1、mysql server 的基本操作
#使用超级用户登录,按回车输入密码 mysql -uroot -p #连接带远程主机 mysql -h110.110.110.110 -uroot -p #退出MySQL命令 exit #修改密码 mysqladmin -u用户名 -p 旧密码 -password 新密码 #添加root密码 mysqladmin -uroot -password 123 #修改root密码 mysqladmin -uroot -p 旧密码 -password 新密码
-- 命令行修改root密码 update mysql.user SET password=PASSWORD("新密码") where user = 'root'; flush privileges -- 显示当前的user select user(); -- 增加新用户
2、基本命令
(1)显示表的结构
-- 1) desc student; -- 2) DESCRIBE student; -- 3) show COLUMNS from student;
(2)显示表中所有内容
SELECT * FROM student;
(3)行数据删除
删除table_name 表中的 deleter_tableid 为 delete_seq的行
delete from table_name where deleter_table = delete_seq
删除table_name表中的table_id从num开始的row_num列
delete from table_name where id=num order by table_id limit row_num
-- 删除指定记录 DELETE FROM student WHERE id = 1 OR id = 2; -- 删除指定行及后面的n条记录 DELETE FROM student WHERE 1 ORDER BY id LIMIT 15; -- 将自增变量初始值设为 1 alter table student auto_increment = 1;
事例
DELETE FROM student WHERE id = 1 OR id = 2;
(4)创建表
`CREATE TABLE student (id INT PRIMARY KEY ,name VARCHAR(255) ,sex CHAR(1))`: -- 创建表并定义字段
(5)删除表
drop table table_name
:直接删除,若不存在则报错
drop table if exists table_name
若存在则删除
drop table student; drop table if exists student;
6、行数据读取
读取第一行
SELECT * from student order by id limit 0,1;
7、向表中插入数据
load data infile 文件路径 into table 表名 fields terminated by ','lines terminated by '\n'ignore 1 rows;
8、主键约束、外键约束、唯一约束
-- 删除数据表主键约束alter table 表名 drop primary key;-- 创建表之后添加主键约束alter table 表名 add primary key(字段名);alter table 表名 modify 主键字段 char(4) primary key;-- 在创建表时添加主键约束create table books(isbn char(4) primary key,name varcahr(255),author varchar(6)-- 若要多个字段创建主键时-- primary key(字段名1,字段名2));-- 主键自动增长
-- 在创建表时添加外键约束create table books(isbn char(4) primary key,name varcahr(255),author varchar(6)foreign key 字段名 references 外表名(字段名)-- 另一种添加外键的方式,此方式可以删除外键约束而不会级联-- constraint 外键逻辑名称 foreign key() references foreign_table(foreign_key););-- 在已有表下创建外键约束alter table 表名 add constraint 外键逻辑名称 foreign key(字段) references 外表名(字段);-- 删除外键约束alter table 表名 drop foreign key 外键逻辑名称;-- 外键级联操作-- 在添加外键时增加级联修改和级联删除alter table daily add constraint foreign key(Cno) references `course_2`(Cno) on update cascade on delete cascade;
-- 表中字段已存在时添加约束alter table student add UNIQUE(`no`);-- 取消unique约束alter table student drop index `no`;
当表中属性被其他表占用时,可先将占用其属性的表的该属性设置为空,在使用
update
关键字进行修改
例:课程表course中的Cno主键属性被选课表sc作为外键占用sc.Cno = 1 ,若想修改course中的course.Cno = 5;则
-- 先将级联表解除占用update sc set sc.Cno = null where sc.Cno = 1;-- 接下来再修改值update course set course.Cno = 5 where course.Cno = 1;
二、mysql常用函数
1、date函数
-- 可获取当前系统时间SELECT NOW();SELECT SYSDATE();
2、string函数
concat():拼接字符串upper():转大写字母lower():转小写字母substring(column, start, len):截取字符从start开始截取len长度REVERSE(s):将字符串s的顺序反过来REPLACE(s,s1,s2)将字符串 s2 替代字符串 s 中的字符串 s1REPEAT(s,n)将字符串 s 重复 n 次RTRIM(s)去掉字符串 s 结尾处的空格SPACE(n)返回 n 个空格TRIM(s)去掉字符串 s 开始和结尾处的空格INSERT(s1,x,len,s2)字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串
将字符串 runoob 重复三次:SELECT REPEAT('runoob',3) -- runoobrunoobrunoob将字符串 abc 中的字符 a 替换为字符 x:SELECT REPLACE('abc','a','x') --xbc去掉字符串 RUNOOB 的末尾空格:SELECT RTRIM("RUNOOB ") AS RightTrimmedString; -- RUNOOB
3、数字函数
ABS(x)返回 x 的绝对值 返回 -1 的绝对值:SELECT ABS(-1) -- 返回1AVG(expression)返回一个表达式的平均值,expression 是一个字段返回 Products 表中Price 字段的平均值:SELECT AVG(Price) AS AveragePrice FROM Products;CEIL(x)返回大于或等于 x 的最小整数 SELECT CEIL(1.5) -- 返回2COUNT(expression)返回查询的记录总数,expression 参数是一个字段或者 * 号返回 Products 表中 products 字段总共有多少条记录:SELECT COUNT(ProductID) AS NumberOfProducts FROM Products;DEGREES(x)将弧度转换为角度 SELECT DEGREES(3.1415926535898) -- 180n DIV m整除,n 为被除数,m 为除数计算 10 除于 5:SELECT 10 DIV 5; -- 2EXP(x)返回 e 的 x 次方 计算 e 的三次方:SELECT EXP(3) -- 20.085536923188FLOOR(x)返回小于或等于 x 的最大整数 小于或等于 1.5 的整数:SELECT FLOOR(1.5) -- 返回1GREATEST(expr1, expr2, expr3, ...)返回列表中的最大值返回以下数字列表中的最大值:SELECT GREATEST(3, 12, 34, 8, 25); -- 34 返回以下字符串列表中的最大值: SELECT GREATEST("Google", "Runoob", "Apple"); -- RunoobLEAST(expr1, expr2, expr3, ...)返回列表中的最小值 返回以下数字列表中的最小值:SELECT LEAST(3, 12, 34, 8, 25); -- 3 返回以下字符串列表中的最小值: SELECT LEAST("Google", "Runoob", "Apple"); -- AppleMAX(expression)返回字段 expression 中的最大值返回数据表 Products 中字段 Price 的最大值:SELECT MAX(Price) AS LargestPrice FROM Products;MIN(expression)返回字段 expression 中的最小值返回数据表 Products 中字段 Price 的最小值:SELECT MIN(Price) AS MinPrice FROM Products;MOD(x,y)返回 x 除以 y 以后的余数 5 除于 2 的余数:SELECT MOD(5,2) -- 1PI()返回圆周率(3.141593) SELECT PI() --3.141593POW(x,y)返回 x 的 y 次方 2 的 3 次方:SELECT POW(2,3) -- 8RAND()返回 0 到 1 的随机数 SELECT RAND() --0.93099315644334ROUND(x)返回离 x 最近的整数SELECT ROUND(1.23456) --1SIGN(x)返回 x 的符号,x 是负数、0、正数分别返回 -1、0 和 1 SELECT SIGN(-10) -- (-1)SQRT(x)返回x的平方根 25 的平方根:SELECT SQRT(25) -- 5SUM(expression)返回指定字段的总和计算 OrderDetails 表中字段 Quantity 的总和:SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;TAN(x)求正切值(参数是弧度)SELECT TAN(1.75); -- -5.52037992250933TRUNCATE(x,y)返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入)SELECT TRUNCATE(1.23456,3) -- 1.234
连接查询
可以通过连接查询从多张数据表提取数据
在MySql中可以通过
join
关键字实现多表的连接查询
join
按照其功能分为三个操作
inner join
内连接
left join
左连接
right join
右连接
1、内连接
-- 若直接做此操作,则获取的是两张数据表的笛卡尔积select * from