当前位置:Gxlcms > 数据库问题 > mysql基础

mysql基础

时间:2021-07-01 10:21:17 帮助过:15人阅读


<1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;
<2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。
<3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。
    SELECT * FROM tb_table            
        WHERE NAME="YUAN";
<4> 注释:单行注释:--
               多行注释:/*......*/
<5>sql语句可以折行操作
<6> DDL,DML和DCL
-- --SQL中 DML、DDL、DCL区别 .

-- -- DML(data manipulation language):
--    它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的
--    数据进行操作的语言
-- 
-- -- DDL(data definition language):
--    DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)
--    的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
-- 
-- -- DCL(Data Control Language):
--    是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)
--    语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权
--    力执行DCL

RDBMS术语
在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:

 

  •     数据库: 数据库是一些关联表的集合。.
  •     数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  •     列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
  •     行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  •     冗余:存储两倍数据,冗余可以使系统速度更快。(表的规范化程度越高,表与表之间的关系就越多;查询时可能经常需要在多个表之间进行连接查询;而进行连接操作会降低查询速度。例  如,学生的信息存储在student表中,院系信息存储在department表中。通过student表中的dept_id字段与department表建立关联关系。如果要查询一个学生所在系的名称,必须从student表中查找学生所在院系的编号(dept_id),然后根据这个编号去department查找系的名称。如果经常需要进行这个操作时,连接查询会浪费很多的时间。因此可以在student表中增加一个冗余字段dept_name,该字段用来存储学生所在院系的名称。这样就不用每次都进行连接操作了。)
  •     主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  •     外键:外键用于关联两个表。
  •     复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  •     索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  •     参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

 

数字类型

 

技术分享
日期和时间类型

技术分享

字符串类型

 

技术分享

基础的sql数据库操作指令
-- 1.创建数据库(在磁盘上创建一个对应的文件夹)
    create database [if not exists] db_name [character set xxx] 
    
-- 2.查看数据库
    show databases;查看所有数据库
    show create database db_name; 查看数据库的创建方式

-- 3.修改数据库
    alter database db_name [character set xxx] 

-- 4.删除数据库
    drop database [if exists] db_name;
    
-- 5.使用数据库
    切换数据库 use db_name; -- 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
    查看当前使用的数据库 select database();



数据表的增删改查


创建表
-- 语法
create table tab_name(
    f1 type[约束条件],
    f2 type[约束条件],
    )[charater set utf8];  --可设置字符编码或引擎

 /* 约束:
       primary key (非空且唯一)  :能够唯一区分出当前记录的字段称为主键!
       unique         
       not null
       auto_increment :用于主键字段,主键字段必须是数字类型
  */


查看表信息
    desc tab_name --查看表结构
    show columns from --tab_name  查看表结构
    show tables --查看当前数据库中的所有的表
    show create table tab_name    --查看当前数据库表建表语句 

修改表结构
-- (1)增加列(字段)
      alter table tab_name add [column] 列名 类型[完整性约束条件][first|after 字段名];
      alter table user add addr varchar(20) not null unique first/after username;
      #添加多个字段
      alter table users2 
            add addr varchar(20),
            add age  int first,
            add birth varchar(20) after name;

   -- (2)修改一列类型
      alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名];
      alter table users2 modify age tinyint default 20;
      alter table users2 modify age int  after id;
   
   -- (3)修改列名
      alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件][first|after 字段名];
      alter table users2 change age Age int default 28 first;

   -- (4)删除一列
      alter table tab_name drop [column] 列名;
      -- 思考:删除多列呢?删一个填一个呢?
      alter table users2 
            add salary float(6,2) unsigned not null after name,
            drop addr;    

   -- (5)修改表名
      rename table 表名 to 新表名;

   -- (6)修该表所用的字符集    
      alter table student character set utf8;

 

删除表
drop table tab_name;


表记录的增删改查

增加表记录
/*
#列与值要严格对应
数字和字符串的注意点
数字不必加单引号,字符串必须加单引号
*/
<1>插入一条记录:

  insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......);


<2>插入多条记录:
  insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......),
                                        (value1,value2,.......) 
                             ...                             ;


<3>set插入:
   insert [into] tab_name set 字段名=值 

    示例:insert into employee_new set id=12,name="alvin3";

 

人气教程排行