MySQL-入门(一)

一、SQL的分类

  • DDL(Data Definition Language):数据定义语言,用来操作数据库对象:库、表、列等;
  • DML(Data Manipulation Language):数据操作语言,用来增删改数据库中的数据;
  • DCL(Data Control Language):数据控制语言,用来设置访问权限和安全级别;
  • DQL(Data Query Language):数据查询语言,用来查询数据库中的数据。

 

二、MySQL中DDL常用命令

    1、操作数据库

操作数据库动作sql语句
创建数据库create database test1;
按照指定字符编码(gbk)创建数据库:Create database test1 character set gbk;
查看数据库show databases;
查看数据的定义信息:show create database test1;
修改数据库:将study2数据库的编码修改为utf-8;alter database test1 character set utf8;
删除数据库drop database test1;
查看当前使用的数据库select database();
切换数据库use test1;

    2、操作数据库表

操作数据库表动作sql语句
创建表语法:(注意最后一个字段后面不能加逗号,否则报错)create table test1(
字段1 字段类型,
字段2 字段类型,
字段3 字段类型
);
查看数据库中所有的表show tables;
查看表的字段信息desc test1;
在上面员工表的基本上增加一个address列。alter table test1 add address varchar(100);
修改job列,使其长度为30。alter table test1 modify job varchar(30);
删除address列,一次只能删一列。alter table test1 drop address;
表名改为user。rename table test1 to user;
查看表格的创建细节show create table user;
修改表的字符集为gbkalter table user character set gbk;
列名name修改为usernamealter table user change name username varchar(20);
删除表drop table user ;

    3、常用的字段数据类型:

常用的字段数据类型:
int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型; char(10)  如果不足10位则会自动补足10位:'abc       '
varchar:可变长度字符串类型;varchar(10) 如果不足10位不会补足:'abc',性能不如char高
text:字符串类型;适用于大文本内容。
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss  会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

    

    4、补充SQL中char、varchar、nchar、nvarchar的区别

  • 字符中,英文字符只需要一个字节存储,汉字需要两个字节存储。英文与汉字同时存在时容易造成混乱,
  • Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。
  • nchar、nvarchar它存储Unicode字符,即所有的字符都用两个字节表示并存储。所以nchar、nvarchar长度是在1到4000之间,最多存储4000个字符。
  • char、varchar它存储非Unicode字符,即英文字符只需要一个字节存储,汉字需要两个字节存储。所以最多存储8000个英文,4000个汉字。
  • 可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。  

   

  5、补充SQL中char(n)、varchar(n)的区别

  • char(n):固定长度字符串类型,n 必须是一个介于 1 和 8,000 之间的数值
    • 例如char (10),它是定长的,当你输入的字符长度小于10时,它会再后面补空值,保证存储字符串长度为10。当你输入的字符大于10时,会报错。取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的。
  • varchar(n):可变长度字符串类型,n 必须是一个介于 1 和 8,000 之间的数值。
    • 例如varchar(10);表示最多存储10个字符,英文或汉字都行。特别说明是10个字符或者10个汉字。有人认为汉字占2位,只能存储5个汉字,但是实际测试证明这里的10是指字符数量,如果是10个汉字,则是存储了20位字节,命令不会报错,因为varchar是可变长度。
    • 可变的意思表示当你输入的字符小于10时,它不会在后面补空值。假如输入3个字符,则他存储长度为3,超过10个字符则报错。

 

三、MySQL之DML常用命令

    DML是对数据库表中的数据进行增、删、改的操作,即添加表中的数据,删除表中的数据,修改表中的数据。MySQL的DML命令主要下面三个关键字:INSERT、DELETE、UPDATE组成。(下图由于表格太大放上去格式变乱,所以改成截图)

e07406e67a8c1036ec52eb4524c0e1aedf9.jpg

 

    补充DELETE和TRUNCATE的区别:

  • DELETE只是删除表中的数据,不删除表,删除后的数据可以恢复。
  • TRUNCATE删除是把表直接删掉(drop),然后再创建一个同样的新表。删除的数据不能找回。执行速度比DELETE快。
  • 开发中通常使用DELETE。

 

四、MySQL之DQL常用命令--简单查询

    DQL中主要是用来查询数据库中的数据,不会对数据库中的数据进行改变,查询关键字:SELECT

    语法:SELECT 字段名 FROM 表名 [WHERE –> GROUP BY –>HAVING–> ORDER BY];其中[]中的内容是查询条件。

简单查询动作sql语句
查询单个字段:select ename from test1;
查询test1表中的全部字段:select * from test1;
说明:开发中不建议使用*,因为会先将其编译成字段,然后再去查询,稍微影响一些性能,而且也不明确,在开发中建议将要查询的字段都写上。
查看数据库show databases;
查询字段使用数学表达式查询员工编号,姓名和年薪:
select test1no,ename,sal*12 from test1;
将查询出的字段名称进行重命名select test1no,ename,sal * 12 as yearsal from test1;
其中as可以省略:
select test1no,ename,sal * 12 yearsal from test1;
可以用中文,中文需要使用”引上:
select test1no,ename,sal * 12 as '年薪' from test1;

 

   包含where关键字的条件查询

条件查询动作(where)sql语句
单个条件查询select name from test1 where sal = 5000;
在test1表下,查询满足sal=5000条件的名字name
查询条件是varchar类型,使用""引上select empno,ename,job from emp where job = 'manager';
查询某个字段不等于某个值select empno,ename,sal from emp where sal <> 5000;
mysql中<>表示不等于,!=也表示不等于,两者的含义和使用方式是一样的
查询条件为某个区间,用between … and …select empno,ename,sal from emp where sal between 1600 and 3000;
等效于
select empno,ename,sal from emp where sal >= 1600 and sal <= 3000;
查询某个字段为空或者非空,is null 和 is not nullselect empno,ename,comm from emp where comm is null;
select empno,ename,comm from emp where comm is not null;
查询同时满足多个条件select empno,ename,job,sal from emp where job ='MANAGER' and sal > 2500;
用and:表示且,可以在where后面可以添加多个限制条件。
查询满足多个条件的一个即可select ename,job from emp where job = 'SALESMAN' or job = 'MANAGER';
or:表示或,只要满足一项条件即可。
and和or表达式的优先级:and优先级高于or。select * from emp where sal>1800 and (deptno=20 or deptno=30);
查询字段属于某几个值的其中一个,用in 、not inselect ename,job from emp where job in ('SALESMAN','MANAGER');
select ename,sal from emp where sal not in (1600,3000);

只要满足一项条件即可,完全可以采用or来表示,采用in会更简洁一些
模糊查询:like
在数据量较大的情况下,使用like会影响性能。
查询姓名以M开头的所有员工:
select ename from emp where ename like 'M%';
查询姓名以N结尾的所有员工:
select ename from emp where ename like '%N';
查询姓名中包含O的所有员工:
select ename from emp where ename like '%O%';
查询姓名中第二个字母是A的所有员工:
select ename from emp where ename like '_A%';
说明:‘_’是占位符,说明占了第几位,而%这是任意几位。

 

附:MySQL语句大小写问题

  • 注意:mysql在windows下是不区分大小写的,在linux中区分大小写,规则如下:
    • 数据库名与表名是严格区分大小写的;
    • 表的别名是严格区分大小写的;
    • 字段名和字段的别名在所有的情况下均是忽略大小写的;
    • 变量名也是严格区分大小写的;
    • 可以在linux中修改mysql配置使其忽略大小写。

转载于:https://my.oschina.net/u/4151118/blog/3074997

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值