MySQL数据库的一些基本语法

mysql的基本语法

拓展:所知道的数据库:关系型数据库 oracle  DB2  SQLServer

 MySQL    都比不上上面这些。实际使用功能足够、开源——意味着不收费 企业 运营成本考虑 )

目前: MySql数据库

MySQL.com: 正经的有oracle公司维护 和主权

mariaDB:org: 是由martin维护的开源数据库。

客户端 访问

mysql.exe  -h127.0.0.1    -p3306    -uroot       -p  

数据库    主机名        端口号     用户名     密码

简写:

mysql -u root   超级用户 最高权限 不需要密码

mysql -u root -p  超级用户 直接enter回车进入

原理结构:

Server ==>database ==>table ==>row ==>col   

服务器  =>  数据库 =>  表   =>     行  => 列

常见的mysql管理命令:

show databases;    #显示服务器上有哪些库

quit;或者exit;           #退出数据库

use  库名;    #使用指定的库

show tables;    #显示当前库中的所有表

desc  表名;    查看当前表的结构

常用的sql语句

基本语法:

注意:

  • 如果数据库中有一行语句出错了,后面的将不会执行
  • 注释:  不会被服务器解析执行
    • 单行注释:    #  被注释的内容
    • 多行注释:    /*被注释的内容*/
  • sql本身不区分大小写, 习惯上 系统一些专用的 关键字 用大写 自己定义的名称 表的具体的内容 可以用小写。
    • SHOW DATABASES;  可以
    • sHoW DataBases ;   也可以
  • drop database if exists 库名; #删除库名的数据库,如果存在的话
  • drop database 库名; #直接删除数据库;
  • create database 库名 ;      # 创建一个数据库
  • use 库名 ;        #使用数据库
  • create table 表名  ;         #创建表
  • insert into  表名 values(值,值,值) #向表中插入一行数据
  • delete from 表名  ;           #删除表中的所有行
  • delete from 表名  where 条件  ; #删除指定的行
  • 修改表中的 数据  只能在原有数据的情况下 才能修改
    • updete 表名  set  列=值,列=值 。。。
    • updete  表名 set  列=值,列=值 where 条件;
  • select * from 表名;  # 查看表中的所有数据
  • select id,name from 表名;  #查看表中的指定数据

sql的两种执行方法:

交互式执行:  输入一行执行一行    仅作为临时查看数据

脚本式执行:  把整个数据库中要执行的代码全部写在一个.sql文件, 一次性提交给服务器 。

mysql -uroot  <  xxx.sql    直接将.sql文件拖进去, 回车

解决 中文乱码问题 。

  1. 当前.sql文件必须是 utf-8格式
  2. .客户端连接服务器时设置编码为 utf8  去掉-
  3. 数据库存储时也要设置 格式为  utf8

确保三者情况都一致 。

补充:

一、数据类型约束

1.数字类型

TINYINT :微整数  占一个字节    取值范围 -128-127   年龄

 SMALLINT:小整数 占2字节     取值  -32768-32767   

 INT:    整数    占4字节      -2 147 483 648,2 147 483 647  

 BIGINT 极大整数  占8字节     -2^64-2^64-1     

 FLOAT  (m,d)单精度浮点数 4字节    

 DOUBLE (m,d) 双精度     8

 DECIMAL (m,d) 定点小数  不会产生四舍五入的精度丢失,m表示的是有效位数,

  • d表示的是小数点后的有效位数
  • ex:  DECIMAL(6,2)  999999.99 ?   9999.99?   

2.日期和时间

DATE: 日期类型只显示 年月日        ‘’YYYY-MM-DD”    

 TIME :   显示 时间                   “HH:MM:SS”

YEAR   显示年份                     ‘’YYYY’’

DATATIME 年月日 时分秒               “YYYY-MM-DD HH:MM:SS”

 now()   表示当前系统时间     值根据时间类型来定

 ex:   date类型        值:    2018-11-26

ex:    datatime        值:    2018-11-26 16:19:36

每个时间类型有一个有效值范围和一个”零”值,当指定不合法的MySQL不能表示的值时使用”零”值。

3.字符串类型

CHAR(m)        定长字符串 执行效率高

用在数据值是固定长度的情况:  手机号  身份证号

VARCHAR(m)     变长字符串   使用在数据值不固定长度的情况

 BINARY、VARBINARY、BLOB、TEXT、ENUM和SET  参考数据库手册

4.sql本身是没有bool类型的数据 但是支持 boolean值

true –>1      false  –>0

可以用bool string   number表示

二、列约束

主键约束  — PRIMARY KEY

PRIMARY KEY 约束唯一标识数据库表中的每条记录。

主键必须包含唯一的值。

主键列不能包含 NULL 值。

每个表都应该有一个主键,并且每个表只能有一个主键。

补充:  表中的所有数据 会按照主键约束的值的 从小到大的顺序排列 显示能够加快查询速度

唯一约束   –UNIQUE

声明为唯一约束的列, 确保每列数据都是唯一性。但是可以允许出现多个 null值 一个表中是允许有多个唯一性的约束   用户名唯一 手机号唯一 邮箱唯一 。。。

1.sname VARCHAR(15) UNIQUE; 唯一约束

2.UNIQUE(sname,birth)   //表示 只有sname birth都相同的情况 才不允许插入

发表评论

电子邮件地址不会被公开。 必填项已用*标注