zoukankan      html  css  js  c++  java
  • MySQL学习笔记(1/2)

    数据库的学习要求:1.为项目设计表;2.使用SQL(Structure Query Language)语句(SQL编程)。其他的都可以使用工具完成。

    SQL:

    DDL:创建库、创建表

    DML:对数据的操作,插入、删除、修改

    DQL:数据查询语句

    DCL:数据控制语句

    1.连接数据库

    现在环境变量配置,在cmd下连接服务器:mysql -h localhost -u root -p密码,mysql -h 连接地址 -u 服务器用户名 -p密码,连接地址可以是localhost(本机)、ip、域名(www....)。密码在这里最好不要输入,以免被盗,可以在输入密码之前先回车,在输入非明文的密码。

    查看当前状态:s;

    查看配置变量:show variables;

    查看配置变量里面的具体的某个值:show variables like ‘time’;也可以方向键翻;

    2.创建数据库

    查看本机的库:show databases;

    创建库:create database (if not exist)库名字;括号里面可写可不写

    删除库:drop database (if exist) 库名字;括号里面可写可不写

    创建表:create table 库名字.user(id int,name char(30),age int ,sex char(3));

    3.选择一个库作为默认的数据库

    选择一个库作为默认的数据库:use 库名字;

    这样进行表操作的时候就不需要前面那样库名字.user,而是可以之间写表名。

    查看当前库里所有的表:show tables;

    查看表结构:desc 表名;

    删除表:drop (if exist) 表名;

    创建表:create if not exist tablename;

    4.增删改查

    插入

    插入:insert into tablename values(1,'zhangsan',10,'nan');

    插入:insert into tablename values('2','lisi','13','nv');为避免出错可以都加引号,可以自动匹配;

    可以部分插入,前面加字段,这样可以不考虑顺序:insert into tablename(id, name) values('1', 'zhangsan');

    查看

    select * from tablename;

    修改

    改一个值:update tablename set name='lili'  where id='2';

    改多个值:update tablename set name='lili' ,age= '21',sex='nan' where id='2' sex;

    删除

    删除:delete from tablename where id=2;

    5.帮助的使用

    按层次查找:

    帮助可以提供的内容:?contents;

    根据上述结果例如可以查询数据类型:?data types;

    根据上述结果例如可以查询int:?int;

    按关键字查找:

    例如想要查找怎样使用show:?show;

    例如想要查找怎样使用create:?create;

    根据网易云课堂学习整理:http://study.163.com/course/courseMain.htm?courseId=247003

     创建数据表

    1.什么是数据表

    行(记录)和列(字段)组成。

    2.创建数据表的SQL语句模型

    DDL

    CREATE TABLE  [IF NOT EXISTS]表名称(

            字段名1 列类型 [属性] [索引],

            字段名2 列类型 [属性] [索引],

            ...

            字段名n 列类型 [属性] [索引]

    )[表类型] [表字符集];

    命名规范:  

    1)虽然SQL是不分大小写的,但是有些系统会区分(Linux),所以表名称和字段名等自定义的名称一般小写。

    2)SQL语句都大写。

    3.数据值和列类型

    1)数值型

    整型

    1B  TINYINT

    2B  SMALLINT

    3B  MEDIUMINT

    4B  INT

    8B  BIGINT

    浮点型

    FLOAT(M,D)      4B

    DOUBLE(M,D)     8B

    定点数

    DECIMAL(M,D)    M+2

    M代表一共几位,D代表几位小数。浮点数不精确,他是一个近似值,不适用于对精度要求高的情况,这些情况可以用定点数。定点数就是小数位数固定的小数,例如保留两位的价格,小数点永远在倒数第二位。具体区别参考  http://www.cnblogs.com/cloudseawang/archive/2007/02/06/641652.html 讲的很详细。

    2)字符型

    "mysql"[双引号]  'mysql'[单引号]  [转义字符]

    char(m)    最多255字节  固定长度

    varchar(m)   最多255字节  可变长度

    m代表位数。

    varchar后面有一个空位‘0’。char和varchar有以下区别:

    char(4)

    字节

    varchar(4) 字节
    '' 4 ''  1
    ‘ab’ 4 'ab' 3
    'abcd' 4 'abcd' 5
    'abcdefgh' 4 'abcdefgh' 5

    text  文本数据  (文章)  2^16字节长度

    MEDIUMTEXT

    LONGTEXT

    blob  二进制数据  (相片)  

    MEDIUMTEXT

    LONGBLOB

    ENUM   枚举  1或2字节

    ENUM("one","two","three","four")  --- 最多有65535个数,一次只能有一个值,例如单选

    SET    集合  1,2,3,4,8字节  ---一次可以用多个集合中的值,中间使用“,”分开,例如多项选择

    3)日期型

    DATE YYYY-MM-DD
    TIME hh:mm:ss
    DATETIME YYYY-MM-DD hh:mm:ss
    TIMESTAMP 时间邮戳 YYYYMMDDhhmmss
    YEAR YYYY

    而一般数据结构中有关于时间的数据结构,例如c++、php中有CTIME这个数字相较于上述类型更好。

    4.数据字段属性

    1)UNSINGED 可以让空间增加一倍,只能用在数值型字段

    2)ZEROFILL 只能用在数值型字段,前导零,该属性自动应用UNSIGNED

    3)AUTO_INCREMENT 只能是整数,数据每增加一条(包括留空 NULL 0)就会自动增1,字段的值是不允许重复的

    每个表都最好有一个ID字段设置为AUTO_INCREMENT

    4)NULL 和NOT NULL

    因为每个语言中的NULL可能格式含义不太一样,所以为了可移植性,建议在创建表示每个字段都不要插入NULL,而使用NOT NULL

    5)DEFAULT

    例如:

    		CREATE TABLE users(
    			id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    			name VARCHAR(30) NOT NULL DEFAULT '',
    			height DOUBLE(10,2) NOT NULL DEFAULT 0.00,
    			age INT NOT NULL DEFAULT 0,
    			sex CHAR(4) NOT NULL DEFAULT '男'
    			);

    5.创建索引

    1)主键索引

    主要作用是确定数据库表中一条特定数据记录的位置

    最好为每一张数据表定义一个主键

    一个表只能指定一个主键,主键的值不能为空

    2)唯一索引 UNIQUE

    为了防止创建重复的值

    每一个表可以有多个唯一索引

    3)常规索引

    • 最重要的技术
    • 提升数据库的性能
    • 索引顺序  5层  软件  PHP   《细说PHP》  书店
    • 可以提高查找的速度,减慢数据列上插入,删除,修改
    • 可以单独使用,也可以创建表示创建 
    • INDEX KEY 是同义词,多列都可以

    4)全文检索

    FULLTEXT 类型索引,MyISAM 表类型使用,只有在varchar char text 文本字符串上使用

    可以多个数据列使用

    6.数据表类型(存储引擎)及存储位置

    MySQL可以针对不同的存储引擎需求选在最优的存储引擎,它是插件式的,查看存储引擎/表类型:

    show engines;

    查看配置文件中的表类型:show variables like 'table_type';

    1)十二之二:数据表类型MyISAM和InnoDB。

    MyISAM表类型:成熟稳定易于管理,表格锁定的机制,强调快速读取操作;有些功能不支持。

    用它来进行操作过程中的碎片进行管理:OPTIMIZE TABLE 表名;

    InnoDB表类型:操作提交回滚,等安全管理;空间占用量较大。

    创建表时指定表类型:CREATE TABLE () TYPE InnoDB/CREATE TABLE () ENGINE InnoDB/

    2)存储位置

    MyISAM类型:.frm 定义结构;.MYD 存储数据;.MYI 保存索引。

    InnoDB类型:.frm和.ibd。

    7.MySQL默认字符集

    显示校对字符集规则:show collation like 'utf8%';//显示utf-8校对规则。

    显示字符集:show character set;

    在配置文件中查看服务器中字符集:show variables like 'character_set_server';

    在配置文件中查看服务器中校对规则:show variables like 'collation_server';

    字符集:是用来定义MySQL存储字符串的方式;

    校对规则:是对规则定义了比较字符串的方式;

    utf8_unicode_ci:ci是大小写不明感的比较规则,cs是大小写敏感的比较规则,bin是二进制比较规则。

    一对多的关系:一个字符集可以对应多个校对规则。

    显示所有字符集校对规则:desc information_schema.character_sets;

    ASCII

    ISO-8895-1/latin1 

    汉字集:

    gb2312-80,国标80年代,6700汉字;不推荐

    gb13000,93年,27400字;不推荐

    gbk,95年;可以用,2字节,数据库运算量比较大时  定长

    gb18030,2000年;数据库支持比较少见

    UTF-32

    USC-2

    UTF-16  

    UTF-8  Unicode字符集  1-4字节 强烈推荐  互联网  UNIX Linux  非定长

    MySQL服务器,数据库,数据表,字段可以设置不同的字符集,每一个字符集缺省为上级字符集设置。

    创建库时指定字符集:

    CREATE DATABASE d1 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

    创建表时默认用库的字符集,也可以指定字符集:

    CREATE TABLE T1(id int) ENGINE InnoDB DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

    客户端与服务器交互时:

    character_set_client

    character_set_connection

    character_set_results

    通常情况下上述字符集和服务器字符集都保证一致就不会乱码;

    同时修改上述三个参数的值:SET NAME 字符集;

    更改库的字符集:ALTER DATABASE CHARACTER SET gbk;

    更改表的字符集:ALTER TABLE t1 CHARACTER SET gbk;

    备份库:mysqldump -u root -p --default-character-set=gbk -d d1> c:/111/111.sql    //一定要记住没有;号

    导入:<

    8.修改表

     Alter table 

     查看帮助:? ALTER TABLE;

    例如:ALTER TABLE t1 ADD name VARCHAR(30) NOT NULL;

    例如:ALTER TABLE t1 ADD age NUSIGNED NOT NULL DEFAULT '0';

    总的来说可以通过使用帮助来使用ALTER TABLE。

  • 相关阅读:
    使用.NET Core在RESTful API中进行路由操作
    基础教程:ASP.NET Core 2.0 MVC筛选器
    Angular 5和ASP.NET Core入门
    net core 使用tagHelper将 enum枚举类型转换为下拉列表select
    教你如何实现微信小程序与.net core应用服务端的无状态身份验证
    解决mssql localdb 中文乱码问题
    datagrid 新增,并行内编辑,提交保存
    合法的json数组字符串,转换json
    jfinal的回滚
    oracle 修改 字段名称
  • 原文地址:https://www.cnblogs.com/laohan1221/p/5727634.html
Copyright © 2011-2022 走看看