MariaDB数据库命令与SQL语句
mysql
----------------------------------------------------------------------------------------------------------------------------------------------
sql
-h,--host= 服务器主机,默认为localhostide
-p,--passowrd= 用户密码,建议使用-p,默认为空密码函数
ip socket:监听在tcp的3306端口,支持远程通讯
(1)mysql -uUSER -pPASSWORD,链接数据库,此处也能够输入mysql -uUSER -p,回车后弹出输入密码也能够。指令中-u后的用户和-p后的密码与各自的选项没有空格
(2)mysql -uroot -pPASSWORD < /路径/DBFILE,导入数据库
mysql_secure_installation 一个脚本,辅助及设置工具
mysqladmin 基于mysql协议管理mysql的工具
五、若是写脚本须要插入SQL数据,能够将命令按照SQL语句写入一个文件,此时用命令
mysql -uUSER -pPASSWORD < SQLFILE
注:/etc/my.cnf的[mysqld]下添加skip_networking=1,表示关闭远程端口,只能本机链接本机数据库
$MYSQL_HOME/my.cnf Server-specific 选项
注:工做中可能须要更改数据库提示符以区分环境,建议在/etc/profile.d/下新建个.sh文件,里面写上export MYSQL_PS1="(\u@\h \v)[\d]>",以后 . 启动一次该脚本
或者在/etc/my.cnf.d/mysql-clients.cnf的[mysql]下添加
2、服务器端命令
(1)数据库对象:数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等
(1)DDL: Data DefinationLanguage 数据定义语言
(2)DML: Data Manipulation Language数据操纵语言
(3)DCL:Data Control Language 数据控制语言
(4)DQL:Data Query Language 数据查询语言
drop database name 直接删除数据库,不提醒
show table status from DBNAME\G 查看某个数据库的存储引擎
show create DBNAME/TBLNAME\G 查看数据库或者表的存储引擎
注:像对于数据库增删改操做都是须要慎重的操做,所以链接数据库时,最好须要mysql -U链接,或者/etc/my.cnf.d/my-clients.cnf文件中[mysqld]下添加safe_upgrade,这样系统对危险操做会提示或者拒绝
(1)CREATE TABLE students (id int UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED);
创建students表,字段有id(id为正整数,无符号,不能为空而且设置为主键)、姓名(可变字段长度为20,不能为空)、年龄(小整数型,无符号)
(2)CREATE TABLE students2 (id int UNSIGNED NOT NULL ,name VARCHAR(20) NOT NULL,age tinyint UNSIGNED,PRIMARY KEY(id,name));
创建students2表,字段有id(id为正整数,无符号,不能为空)、姓名(可变字段长度为20,不能为空)、年龄(小整数型,无符号),主键设置为复合主键(id,name)
(3)ALTER TABLE students RENAME s1;
(4)ALTER TABLE s1 ADD phone varchar(11) AFTER name;
修改表格s1,在name字段后添加phone字段,该字段为可变长度字符型,11个字节
注意:alter没有before字段,若是插入的字段在首列,用FIRST
(5)ALTER TABLE s1 MODIFY phone int;
(6)ALTER TABLE s1 CHANGE COLUMN phone mobile char(11);
修改表格s1,更改字段phone为mobile,该字段为固定长度字符型,11个字节长度上限
(7)ALTER TABLE s1 DROP COLUMN mobile;
(9)ALTER TABLE students ADD gender ENUM('m','f')
修改表格students,添加字段gender,取值只有m、f
(10)ALETR TABLE students CHANGE id sid int UNSIGNED NOT NULL PRIMARY KEY;
修改表格students,改变字段id为sid,定义sid无符号,不为空且为主键
(11)ALTER TABLE students ADD UNIQUE KEY(name);
(12)ALTER TABLE students ADD INDEX(age);
(14)SHOW INDEXES FROM students;
(15)ALTER TABLE students DROP age;
(16)INSERT INTO students VALUES(1,'tom','m'),(2,'alice','f');
(知道表结构只有id姓名性别这三个字段状况下)插入学生表信息
(17)INSERT INTO students(id,name) VALUES(3,'jack'),(4,'allen');
(18)SELECT * FROM students WHERE id < 3;
(19)SELECT * FROM students WHERE gender='m';
(20)SELECT * FROM students WHERE gender IS NULL;
(21)SELECT * FROM students ORDER BY name DESC LIMIT 1,2;
按name倒序排列,跳过第一个,查询学生表跳事后的前两条信息
(22)SELECT * FROM students WHERE id >=2 and id <=4
(23)SELECT * FROM students WHERE id in ('2','4')
(24)SELECT * FROM students WHERE id BETWEEN 2 AND 4
(25)SELECT * FROM students WHERE name LIKE ‘t%’
(26)SELECT * FROM students WHERE name RLIKE '.*[lo].*';
(27)SELECT id stuid,name as stuname FROM students
查询字段id、stuid、name(显示结果以stuname)
注意:使用group by分组语句时,查询的数据内容一般会将group by后的字段也一并加入select语句以后做为查询结果的区分,而且查询语句中若是有判断条件语句,分组前对结果的条件判断依旧用where,分组后对结果的条件判断用having,举例
select ClassID,avg(Age),name from students where gender='f' group by ClassID having name like 'L%';
从学生表中查询ClassID,avg(Age)、name字段,条件为gender值为f的记录,并以ClassID为单位进行分组,分组后的结果筛选出name记录里以L开头的记录
FROM tb1 LEFT JOIN tb2 ON tb1.col=tb2.col
FROM tb1 RIGHT JOIN tb2 ON tb1.col=tb2.col
视图:view,虚表,保存有实表的查询结果,若是咱们常常用到一句很长的SQL语句,为避免每次都输入那么长的语句,此时能够创建视图:create view VIEWNAME as SQLSENTENCE;等待下次引用就能够select * from VIEWNAME;直接查询。举例说明create view view_students_score as select s.stuid as stu_id,s.name as stu_name,sc.score,c.course from students as s inner join scores sc on s.stuid=sc.stuid inner join courses c on sc.courseid=c.courseid;该语句建立学生成绩表视图,等下次再用该表时候用命令select * from view_students_score;便可