1、启动/关闭mysql服务
以管理员身份运行命令窗口
net start 服务名称 //一般默认服务名称是mysql80 (而我的是mysql)
net stop 服务名称 //一般默认服务名称是mysql80 (而我的是mysql)
2、在命令窗口进入mysql进行操作数据库
mysql -u root -p
如果报错mysql不是命令,那你需要配制环境变量,值是mysql所在路径,到bin这一层
3、mysql语句操作数据库
注意:每条命令后的 ;是必不可少的
注意:所有的数据库名,表名,表字段都是区分大小写的。所以你在使用SQL命令时需要输入正确的名称。
-
quit;
------ 退出命令窗口 -
show databases;
---- 显示已经创建的数据库 -
create database 数据库名;
---- 创建数据库 -
drop database 数据库名;
----删除数据库 -
use 数据库名;
---- 选择你要操作的数据库 -
create table 表名( key值 类型 是否为空,key值 类型 是否为空......);
----创建一个简单的表 -
DESC 表名
------ 显示表中各个字段的信息 -
show tables;
---- 显示表名 -
drop table 表名
---- 删除表 -
INSERT INTO 表名 (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;
------ 新增数据 -
DELETE FROM <表名> [ WHERE .....]
----- 删除某条数据,如果没有WHERE条件的话,则是全部删除。 -
UPDATE 表名 SET field1=new-value1, field2=new-value2 [WHERE Clause]
----- 更新数据 -
SELECT field1,field2 FROM 表名 [WHERE ......]
----- 查询数据 -
SELECT field1, field2,...fieldN FROM 表名 WHERE condition1 [AND [OR]] condition2.....
------ WHERE 条件语句 -
SELECT * FROM 表名 WHERE fileld1 LIKE 'java%';
----- LIKE模糊匹配字符串(这里表示查询以java开关的字符)
like 匹配/模糊匹配,会与 % 和 _ 结合使用:- %:表示任意 0 个或多个字符
- _:表示任意单个字符
- [^] :表示不在括号所列之内的单个字符
'%a' //以a结尾的数据 'a%' //以a开头的数据 '%a%' //含有a的数据 '_a_' //三位且中间字母是a的 '_a' //两位且结尾字母是a的 'a_' //两位且开头字母是a的
-
SELECT field1 FROM 表名 [WHERE ...] UNION [ALL] SELECT field2 FROM 表名 [WHERE ...];
---- UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中UNION 语句: 用于将不同表中相同列中查询的数据展示出来;(不包括重复数据) UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)
-
SELECT field1,field2... FROM 表1,表2... ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
---- ORDER BY排序,默认是升序ASC,可修改为降序DESC -
SELECT field1,field2..., COUNT(*) FROM 表名 GROUP BY field;
----- GROUP BY 按指定值分组返回数据。 -
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
------ JOIN 返回以某种关系关联的两张表的指定的值。INNER JOIN.....ON.....(内连接,或等值连接):获取两个表中字段匹配关系的记录。 LEFT JOIN.....ON.....(左连接):获取左表所有记录,即使右表没有对应匹配的记录。 RIGHT JOIN.....ON.....(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
-
SELECT * FROM 表名 WHERE field IS NULL
WHERE 中Null值的判断IS NULL: 当列的值是 NULL,此运算符返回 true。 IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
-
SELECT field FROM 表名 WHERE field REGEXP '^st';
------ REGEXP 正则匹配,这里表示的是以st开关的字符。
SELECT name FROM person_tbl WHERE name REGEXP 'ok$'; //查找name字段中以'ok'为
结尾的所有数据
SELECT name FROM person_tbl WHERE name REGEXP 'mar'; //查找name字段中包含'mar'字符串的所有数据:
SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$'; //查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据:
更多情况请参考正则操作符:
^ : 以某字符开关
$ : 以某字符结尾
[...] : 匹配【】内所包含的任意一个字符
[^...] : 匹配未包含的任意字符
p1|p2|p3 : 匹配 p1 或 p2 或 p3
* : 匹配前面的子表达式零次或多次
+ : 匹配前面的子表达式一次或多次
{n} : n 是一个非负整数。匹配确定的 n
{n,m} : m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次
-
MySQL 事务
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!BEGIN : 开启事务 COMMIT : 提交事务 ROLLBACK : 回滚,撤销正在进行的所有未提交的修改 ...... //示例: mysql> begin; # 开始事务 mysql> insert into runoob_transaction_test value(5); mysql> insert into runoob_transaction_test value(6); mysql> commit; # 提交事务,最终一起新增两条数据,如果执行失败则一条也不新增
-
ALTER命令,删除、修改、新增表中的字段以及表名
ALTER TABLE testalter_tbl ADD i INT; // 新增字段i
ALTER TABLE 表名 DROP i; // 删除字段i
ALTER TABLE 表名 MODIFY c CHAR(10); //修改字段类型
ALTER TABLE 表名 CHANGE i j BIGINT; //修改字段名称与类型,CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型
ALTER TABLE 表名 MODIFY j BIGINT NOT NULL DEFAULT 100; // 这里设置了默认值DEFAULT
- 使用 AUTO_INCREMENT 来定义序列
CREATE TABLE school (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT, //自动增加
-> PRIMARY KEY (id), // 把id设置为主键
-> name VARCHAR(30) NOT NULL,
-> date DATE NOT NULL,
-> origin VARCHAR(30) NOT NULL );
4、mysql数据类型
数据类型众多,总分为三大类:
-
数值类型
-
日期与时间类型
-
字符串类型