doc命令行操作mysql数据库

1、操作数据库

  1. 连接数据库:mysql -uroot -p123123
  2. 显示已经存在的数据库:show databases;
  3. 创建数据库:

    • create database mydb1;
    • create database mydb2 character set gbk;
      • show create database mydb2; 查看前面创建的mydb2数据库的定义信息
    • create database mydb3 character set gbk COLLATE gbk_chinese_ci;
      • 带校验规则的数据库
      • collate 关键字;gbk_chinese_ci校验规则
  4. 修改数据库:alter database mydb2 character set utf8

  5. 使用数据库:use mydb1;
  6. 删除数据库:drop database mydb3;
  7. 查看当前使用的数据库:select database();

2、操作表

  1. 创建表:create table emp(id int(4)not null,name varchar(20) not null,primary key(id));
  2. 显示表:show tables;
  3. 查看表的字段信息:DESC emp;
  4. 查看表格的创建细节:
    • show CREATE TABLE user;
    • show CREATE TABLE user\G;格式化显示结果
  5. 对表的列操作:
    • ALTER TABLE emp ADD image blob;添加列
    • ALTER TABLE emp MODIFY job varchar(60);修改列job的类型长度
    • ALTER TABLE emp DROP image;删除列
    • ALTER TABLE user CHANGE name username varchar(100);修改name列为usename
  6. 表名改为user:rename TABLE emp TO user;
  7. 修改表的字符集为gbk:ALTER TABLE user CHARACTER SET gbk;
  8. 删除表:DROP TABLE user;

3、DML数据操作(对表增、删、改)

  • 在mysql中,字符串类型和日期类型都要用单引号括起来。'tom' '2015-09-04'
  • 空值:null
  1. insert 插入数据(如果插入空值,请使用null):

    • INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);
    • insert emp values(id,name);
    • insert into emp values(id,name);
    • insert into emp(id) values(id,);
    • insert into emp values(id,name),(id1,name1),(id2,name2);批量插入
  2. 修改数据:

    • UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值
    • updata emp set name = '小强' where id = 1003;
  3. 删除数据:
    • DELETE FROM 表名 【WHERE 列名=值】
    • delete from emp where id = 1003;
    • truncate TABLE emp;
    • DELETE 删除表中的数据,表结构还在;删除后的数据可以找回,TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。删除的数据不能找回。执行速度比DELETE快。

4、DQL数据查询(查)

  • 数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
  • 查询返回的结果集是一张虚拟表。
  1. 查询数据:
    • SELECT 列名 FROM表名 【WHERE --> GROUP BY -->HAVING--> ORDER BY-->LIMIT】
    • select * from emp;
  2. 条件查询where
    • =、!=、<>、<、<=、>、>=;
    • BETWEEN…AND;
    • IN(set) not in(set)
    • IS NULL; IS NOT NULL
    • and
    • or
    • not
  3. 模糊查询like
    • _ 任意一个字符
    • % 任意0~n个字符
  4. 字段控制查询(去重、判断null)
    • SELECT distinct name FROM emp;去除name重复记录
    • SELECT *,sal+IFNULL(comm,0) FROM emp;sal是薪水 comm佣金,判断佣金为null则转换成数值0
    • SELECT *, sal+IFNULL(comm,0) AS total FROM emp;起别名
    • SELECT *,sal+IFNULL(comm,0) total FROM emp;as可以省略
  5. 排序
    • order by 列名 asc(默认升序) desc
    • SELECT * FROM emp ORDER BY sal DESC,empno ASC;sal相同时,按empno降序排列
  6. 聚合函数
    • COUNT():统计指定列不为NULL的记录行数
      • SELECT COUNT(*) AS cnt FROM emp;查询emp表中记录数
      • SELECT COUNT(comm) cnt FROM emp;查询emp表中有佣金的人数
    • MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算
    • MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
      • SELECT MAX(sal), MIN(sal) FROM emp;
    • SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
    • AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
      • SELECT SUM(sal+IFNULL(comm,0)) FROM emp;查询所有雇员月薪+佣金和
  7. 分组查询GROUP BY having
    • 注:凡和聚合函数同时出现的列名,一定要写在group by 之后
    • SELECT deptno,COUNT(*) FROM emp GROUP BY deptno;查询每个部门的部门编号以及每个部门的人数
    • SELECT deptno, SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal) > 9000;查询工资总和大于9000的部门编号以及工资和
    • having与where的区别:
      • having是在分组后对数据进行过滤。
      • where是在分组前对数据进行过滤
      • having后面可以使用聚合函数(统计函数)
      • where后面不可以使用聚合函数
  8. limit
    • LIMIT用来限定查询结果的起始行,以及总行数
    • SELECT * FROM emp LIMIT 0, 5;查询5行记录,起始行从0开始
    • 查询代码的书写顺序和执行顺序
      • 查询语句书写顺序:select – from- where- group by- having- order by-limit
      • 查询语句执行顺序:from - where -group by - having - select - order by-limit

5、数据的完整性

  • 作用:保证用户输入的数据保存到数据库中是正确的
  • 确保数据的完整性 = 在创建表时给表中添加约束
  • 完整性的分类
    • 实体完整性
    • 域完整性
    • 引用完整性

1、实体完整性

  • 实体:即表中的一行(一条记录)代表一个实体(entity)
  • 实体完整性的作用:标识每一行数据不重复。
  • 约束类型:
    • 主键约束(primary key)
      • CREATE TABLE student(Id int primary key,Name varchar(50));
      • CREATE TABLE student(id int,Name varchar(50),Primarykey(id));此种方式优势在于,可以创建联合主键,如下例:
      • CREATE TABLE student(id int,Name varchar(50),Primary key(id,name));
      • CREATE TABLE student(Id int,Name varchar(50)); ALTER TABLE student ADD PRIMARY KEY (id);
    • 唯一约束(unique)
      • CREATE TABLE student(Id int primary key,Name varchar(50)unique);
    • 自动增长列(auto_increment)
      • 给主键添加自动增长的数值,列只能是整数类型,但是如果删除之前增长的序号,后面再添加的时候序号不会重新开始,而是会接着被删除的那一列的序号
      • CREATE TABLE student(Id int primary key auto_increment,Name varchar(50));

2、域完整性

  • 域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较
  • 域代表当前单元格
  • 域完整性约束:数据类型 非空约束(not null) 默认值约束(default)

3、引用完整性

  • 要有外键必须先有主键,主键和外键的类型必须一致
  • ALTER TABLE score1 ADD CONSTRAINT fk_stu_score FOREIGN KEY(sid) REFERENCES stu(id);

Navicat使用

  • 连接数据库
    • 连接名:给要连接的数据哭起一个名字(连接的是数据库服务器,不是某一个数据库)
    • 主机名或IP地址:loaclhost
    • 端口:3306
    • 用户名:
    • 密码:

卸载

 

 1.停止mysql服务   net stop mysql       启动mysql服务  net start mysql
 2.卸载mysql
 3.找到mysql 安装目录下的 my.ini   datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

修改密码

* 安装成功了打开cmd  --> mysql -uroot -p你的密码
* 修改mysql root用户密码
    * 1) 停止mysql服务 运行输入services.msc 停止mysql服务
            或者 cmd -->  net stop mysql
    * 2) 在cmd下 输入 mysqld --skip-grant-tables 启动服务器 光标不动 (不要关闭该窗口)
    * 3) 新打开cmd 输入mysql -u root -p 不需要密码
        use mysql;
        update user set password=password('abc') WHERE User='root';
    * 4) 关闭两个cmd窗口 在任务管理器结束mysqld 进程
    * 5) 在服务管理页面 重启mysql 服务
        密码修改完成

 

转载于:https://my.oschina.net/u/3425197/blog/995773

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值