• Mysql第二天详解


    MySql02##

    复习

    • 显示所有数据

        show databases;
      
    • 创建新数据库,设置编码方式utf8

        create database demo2 default charset utf8;
      
    • 显示创建数据的语句

        show create database demo2;
      
    • 删除数据库

        drop database demo2;
      
    • 选择使用指定的数据库

        use demo1;
      
    • 查看库中所有表

        show tables;
      
    • 创建表

        create table book(
        	bid int(4) primary key comment '书id', 
        	bname varchar(50) comment '书名',
        	pub varchar(50) comment '出版社',
        	author varchar(50) comment '作者'	
        )engine=myisam charset=utf8;
      

    所有字段名,使用``,所有的字符串使用''或者""

    • 查看建表语句

        show create table book;
      
    • 查看表结构

        desc book;
      
    • 修改表名

        rename table book to book1;
      
    • 修改表属性 ,引擎和字符集

        alter table book1 engine=innodb charset=utf8;
      
    • 添加字段 first after

        alter table book1 add(
        	type varchar(20) comment '类型',
        	numinput int(10) comment '进货量',
        	numstore int(10) comment '库存量'
        );
      
    • 修改字段名 bid bno

        alter table book1 change bid bno int(4);
      
    • 修改顺序 pub 放到author后面

        alter table book1 modify pub varchar(50) after author;
      
    • 修改数据类型 bno int(4) -->int(10)

        alter table book1 modify bno int(10);
      
    • 删除字段

        alter table book1 drop 字段名;
      
    • 删除表

        drop table 表名;
      
    • 插入语句

        insert into book1(bno,bname,author,type) values(1001,'斗破苍穹','天蚕土豆','玄幻');
        insert into book1(bno,bname,author,type) 
        values(1002,'全职高手','蝴蝶兰','网游竞技');
        insert into book1(bno,bname,author,type) 
        values(1003,'鬼吹灯','天下霸唱','恐怖');
        insert into book1(bno,bname,author,type)
        values(1004,'西游记','吴承恩','4大名著');
        insert into book1(bno,bname,author,type)
        values(1005,'java基础','王克晶','达内学习手册');
      
    • update语句

      • 把1005号书,修改成'天线宝宝',作者不详,类型少儿

      • 把1004号书修改成'天龙八部',作者金庸,类型武侠

        update book1 set bname="天线宝宝",author="作者不详",type="少儿" where bno=1005;

    • 删除类型是'恐怖'的所有书籍

    • 删除全表记录

    • 删除表格

    1. 修改book名称为book_item

       rename table book to book_item;
      
    2. 在表格尾部添加字段price double(7,2)

       alter table book_item add price double(7,2);
      
    3. 把price字段的位置放到author之后

       alter table book_item modify price double(7,2) after author;
      
    4. 把表中存在的数据添加价格,每本书都在100~1000之间,自定

       update book_item set price=199  where bno=1001;
      
    5. 修改1001的价格为500元

    6. 把所有字段的null字段补全

       update book_item set pub="达内出版社",numinput=500,numstore=100 where pub is null;
      
    7. 删除价格小于150的所有条目

    8. 删除所有数据

    SQL分类

    • 数据定义语言 DDL 重点
    • 数据操纵语言 DML 重点 增 删 改
      • 数据查询语言 DQL select 查
    • 事务控制语言 TCL
    • 数据库控制语言 DCL

    数据定义语言 DDL

    - 负责数据结构定义,与创建数据库对象的语言
    - 常用create alter drop
    - DDL不支持事务,DDL语句执行之后,不能回滚
    

    数据操纵语言 DML

    - 对数据库中更改数据操作的语句
    - select insert update delete--> CRUD 增删改查
    - 通常把select相关操作,单独出来,称之为DQL
    - DML支持事务,在非自动提交模式时,可以利用rollback回滚操作.
    

    数据查询语言 DQL

    - 筛选,分组,连表查询  **面试重点**
    

    TCL 和 DCL

    - 事务控制语句TCL
    - 负责实现数据库中事务支持的语言,commit rollback savepoint等指令
    
    - DCL数据库控制语言
    - 管理数据库的授权,角色控制等,grant(授权),revoke(取消授权)  
    

    练习:

    1. 案例:创建一张表customer(顾客)

       create table customer(
       	cid int(4) primary key comment '顾客编号',
       	cname varchar(50) comment '顾客姓名',
       	sex char(5) comment '顾客性别',
       	address varchar(50) comment '地址',
       	phone varchar(11) comment '手机',
       	email varchar(50) comment '邮箱'
       ); 
       show create table customer;
      
    2. 插入5条数据

       insert into customer values(1001,'小明','男','楼上18号','123','123@163.com');
       insert into customer values(1002,'小红','女','楼上17号','1234','1234@163.com');
       insert into customer values(1003,'老王','男','楼上18号隔壁','1234','1234@163.com');
       insert into customer values(1004,'老宋','男','楼上17号隔壁','1234','1234@163.com');
       insert into customer values(1005,'小马','女','楼上17号隔壁','1234','1234@163.com');
      

    -1 修改一条数据的姓名 小红的姓名
    -2 修改一条数据的性别 老王的性别
    -3 修改一条数据的电话 1001号的电话
    -4 修改一条数据的邮箱 邮箱为123@163.com,改成323@163.com
    -5 查询性别为 男的所有数据

    	select * from customer where sex="男";
    

    -6 自定义DDL操作的需求,5道题,可以同上面book表的操作

    数据库数据类型

    • 主要包括5大类

    • 整数类型 int, big int

    • 浮点数类型 double decimal

    • 字符串类型 char varchar text

    • 日期类型 date datetime timestamp time year...

    • 其他数据类型 set....

    字符串

    - char(固定长度) 定长字符串 最多255个字节
    
    	- 定多少长度,就占用多少长度
    	- 多了放不进去,少了用空格补全
    	- 不认识内容尾部的空格
    
    - varchar(最大长度) 变长字符串 最大65535字节,但是使用一般不超过255
    
    	- 只要不超过定的长度,都可以放进去
    	- 以内容真实长度为准
    	- 认识内容尾部的空格
    
    - text 最大65535字节
    - blob 大数据对象,以二进制(字节)的方式存储
    

    整数

    • tinyint 1字节

    • smallint 2字节

    • int 4字节

    • bigint 8字节

        int(6)
        影响的是查询时显示长度(zerofill)
        不影响数据的保存长度
      

      create table t1(id1 int,id2 int(5));
      insert into t1 values(111111,111111);

      alter table t1 modify id1 int zerofill;
      alter table t1 modify id2 int(5) zerofill;

      insert into t1 values (1,1);

      float 4字节
      double 8字节 double(8,2)
      可能会产生精度的缺失 10.0/3 3.3333333336
      decimal
      不会缺失精度,但是使用的时候需要指定总长度和小数位数

    日期

    - date 年月日
    - time 时分秒
    - datetime 年月日时分秒,到9999年,而且需要手动输入,如果没有手动输入,就显示null.
    
    - timestamp 年月日时分秒,在没有数据手动插入时,自动填入当前时间.最大值2038
    
    - bigint 1970-1-1 0:0:0 格林威治时间
    

    案例:创建表t,字段d1 date,d2 time,d3 datetime,d4 timestamp

    	create table t(
    		id int,
    		d1 date,
    		d2 time,
    		d3 datetime,
    		d4 timestamp
    	);
    	insert into t (d1,d2) values ('1910-01-10','12:32:12');
    	insert into t values(1,'2018-12-21','15:12:00','1995-02-10  12:08:12','2030-10-10 15:19:32');
    	insert into t values(2,'3018-01-25','15:12:34','9234-12-31 12:12:12','2030-12-31 12:12:12');
    	insert into t values(2,'3018-01-25','15:12:34','9999-12-31 23:59:59','2030-12-31 12:12:12');
    

    练习

    创建人物表,插入,修改,查询

    	create table person(
    		id int(4) primary key,
    		name varchar(50),
    		age int(3)
    	);
    	insert into person values(1,"梅超风",36);
    	insert into person values(2,"洪七公",96);
    	insert into person values(3,"杨过",40);
    	insert into person values(4,"令狐冲",28);
    	insert into person values(5,"张三丰",100);
    	insert into person values(6,"张翠山",27);
    	insert into person values(7,"张无忌",27);
    	insert into person values(8,"赵敏",18);
    	insert into person values(9,"独孤求败",250);
    	insert into person values(10,"楚留香",36);
    
    1.案例:修改张三丰的name为刘备,id为11
    
    		update person set name="刘备",id=11 where name="张三丰";
    
    2.案例:修改2号人物的的name为夏侯渊
    
    		update person set name="夏侯渊" where id=2;
    
    3.案例:根据条件修改person表中的数据,修改id是6的数据中,姓名改为'任我行',	年龄改为39
    
    		update person set name="任我行",age=39 where id=6;
    
    4.案例:修改姓名是‘楚留香'的数据,把id改为20,年龄改为19
    
    		update person set id=20,age=19 where name="楚留香";
    
    5.案例:把person所有的数据的年龄全部改为20	
    
    		update person set age=20;
    
    6.案例:修改id为7的数据,把id改为100,姓名改为杨过,年龄改为21
    
    		update person set id=100,name="杨过",age=21 where id=7;
    
    7.案例:修改姓名是独孤求败,把年龄改为35
    
    		update person set age=35 where name="独孤求败";
    
    8.案例:修改id=8的信息,把姓名改为房玄龄
    
    		update person set name="房玄龄" where id=8;
    
    9.案例 :修改id为20并且年龄为20的人的姓名为刘德华(郑少秋也行)提示  where...and...
    
    		update person set name="郑少秋" where id=20 and age=20;
    

    查询

    没有条件的简单查询

    1. select * from 表名;查询表中所有的数据

      select * from person;
      select * from t;
      select * from emp;
      select * from dept;

    2. 查询某些列中的值

      select name as '姓名' from person;
      select name as '姓名',age as '年龄' from person;
      select id as '编号',name as '姓名',age as '年龄' from person;

    • 学习过程的编程习惯select * from 表;

    • 工作中的编程习惯select id,name,age from person;

    • 查询emp表中所有员工的姓名,上级领导的编号,职位,工资

      select ename,mgr,job,sal from emp;

    • 查询emp表中所有员工的编号,姓名,所属部门编号,工资

      select empno,ename,deptno,sal from emp;

    • 查询dept表中所有部门的名称和地址

      select dname,loc from dept;

    如果忘记了mysql的用户名和密码怎么办

    1. 卸载重新装
    2. 不重装软件如何修改密码
      • 1.停止mysql服务

      • 2.cmd中输入一个命令

        mysqld --skip-grant-tables;
        -通过控制台,开启了一个mysql服务

      • 3.开启一个新的cmd

        -mysql -u root -p
        可以不使用密码进入数据库

        1. show databases;----mysql
        1. use mysql;
        1. update user set password=password('新密码') where user="root";
        1. 关闭mysqld这个服务/进程
        1. 重启mysql服务

    作业

    mysql02,一天的代码重新敲一遍,熟悉emp和dept列名

  • 相关阅读:
    解决 “页面中文字增多,字号突然变大” 的问题
    Seajs的用法
    clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
    页面中文字增多,字号会突然变大
    flex的使用实例
    移动端弹窗滚动时window窗体也一起滚动的解决办法
    display:inline-block带来的问题及解决办法
    sql 整理积累
    T-SQL建索引
    php json_encode在CI框架中的使用细节
  • 原文地址:https://www.cnblogs.com/Graham-java/p/8386534.html
走看看 - 开发者的网上家园