zoukankan      html  css  js  c++  java
  • 数据库-SQL语句:删除和修改语句-列类型-列约束

    使用MySQL客户端连接服务器两种方式

    (1)交互模式 ——

    mysql.exe  -h127.0.0.1  -uroot  -p

    mysql   -uroot

    (2)脚本模式:——增删改

    mysql  -uroot  <  d:/xx/yy.sql

    Server => Database => Table => Row => Column

    常用SQL命令系统关键字都大写,非关键字都小写

    SHOW DATABASES;

    USE dangdang;

    SHOW TABLES;

    DESC book;

    ----------------------------

    DROP DATABASE IF EXISTS dangdang;

    CREATE DATABASE dangdang;

    USE dangdang;

    CREATE TABLE book(

      name VARCHAR(128),

      price INT

    );

    INSERT  INTO  book  VALUES('Sanguo', '15');     

    INSERT  INTO  book  VALUES('XiYou', '25');

    SELECT  *  FROM  book;

    今日目标:

    (1)补充SQL语句:删除和修改语句

    (2)类型

    (3)列约束

    1. 补充SQL语句

      (10)delete from  ; 删除指定表所有的数据

     delete from 表名  where 条件; 删除满足指定条件的记录

      (11)update  set 列=值, =值 ;  修改指定表所有数据行

     update  set 列=值, =值   where  条件修改满足指定条件的记录

    练习:创建一个2_tedu.sql文件,编写如下SQL语句

    丢弃然后重建数据库tedu,进入该库。

    创建保存部门信息的表dept:  did,   dname,   empCount

    插入3行部门数据:      10   Develop     3

         20   Market      1

    40   Test          2

    创建保存员工信息的包emp:  有如下的列:

    #eid,   ename,  sex,   salary,   birthday,   deptId

    插入6行员工数据,分属上述三部门例如

    #5513   TOM    M    8000    1990-1-1     20

    删除最后一个员工 —— 需要执行几条语句?

    一个员工由10号部门转到20号部门 —— 需要执行几条语句?

    面试题:WEB项目中哪里可能导致乱码问题?

    数据库乱码、后台语言乱码、网络传输、浏览器解析

    2.数据库中的乱码问题

     计算机只能处理数字,如何保存字符?——把字符转换为数字

     A - 65   B - 66   a - 97   b - 98

     AABBAaBb 可以编码(encode) 6565666665976698

     6565666665976698 可以解码(decode)AABBAaBb

     ASCII字符集/编码方案:包含128个字符,对英文常用字符/符号进行了编码

     GB2312/GBK字符集包含21003个字符,对英文/常用简体汉字都进行了编码兼容ASCII编码

     BIG5字符集包含13000多个字符,对英文/常用繁体汉字都进行了编码,兼容ASCII编码。

     LATIN-1字符集包含256个字符,对英文/西欧常用符号进行了编码兼容ASCII编码      

     Unicode字符集包含6万多个字符对世界上主流语言的常用符号都进行了编码,兼容ASCII编码。  编码方案又具体分为UTF-8、UTF-16、UTF-32等等多套方案。

      数据库中乱码问题产生的根源:存储数据时(编码)使用某个字符集,显示时(解码)使用了另一套

      

    解决方法——三处一致     

      (1)x.sql脚本文件另存为UTF-8

      (2)提交SQL语句时设置语句所用的字符集为UTF8

      (3)创建数据库时指定默认字符存储方案为UTF8

    3.MySQL中的列类型

      CREATE  TABLE  表 ( 列名  类型  );

      MySQL中常用的列类型 —— 在手册11章——MySQL提供的列类型比其它所有数据库都要多:

      (1)数值类型 —— 数值数据可用''括起来/也可以不

    TINYINT:整数1字节-128~127如学生.年龄

    SMALLINT:整数2字节-32768~32767如部门.员工数量

      INT:整数,4字节-2147483648~2147483647如帖子.回复数量

    BIGINT:整数8字节19位数字如当前距离计算机元年多少毫秒

    FLOAT(M,D):单精度浮点小数,4字节,3.4E38

    DOUBLE(M,D):精度浮点小数8字节,1.79E308

    DECIMAL(M,D):定点小数存储时小数点不动,不会产生四舍五入,不会产生精度丢失M表示总的有效位数,D表小数点后允许的位数,如笔记本.价格 DECIMAL(7, 2)高考成绩 DECIAL(4, 1)

    BOOL: 布尔类型,只有两个值 TRUE/1  FALSE/0,如商品.是否特价、员工.是否在岗、用户.是否在线新闻.是否置顶显示

      (2)日期时间类型——数据必须用''括起来

    DATE:日期,如员工.生日   

    CREATE TABLE emp(birthday DATE)

    INSERT INTO emp VALUES( '1990-1-1' )

    TIME:时间,如学生.上课时间

    INSERT INTO stu VALUES( '8:30:00' )

    DATETIME:日期时间,如帖子.发表时间

    CREATE TABLE article(pubTime  DATETIME)

    INSERT INTO article VALUES( '2017-10-5  22:18:35' )

      (3)字符串类型——数据必须用''括起来

    CHAR(M):定长字符串长度不够凑,操作效率高与VARCHAR!如员工.身份证号,M不能超过255

    VARCHAR(M):变长字符串结尾最多只需要一个,可能更省空间!如员工.个人简历、帖子.内容,M不能超过65535

    TEXT(M):大型变长字符串,M不能超过2G

    小知识:浮点小数

    1234.5678  等于:       

    123.45678x10^1

    12.345678x10^2

    1.2345678x10^3   科学计数法   1.2345678E3

    0.12345678x10^4

    12345.678x10^-1

    123456.78x10^-2

    ......

    CHAR(4)

    VARCHAR(4)

    'a'

    a

    a

    'ab'

    ab

    ab

    'abc'

    abc

    abc

    'abcd'

    abcd

    abcd

    'abcde'

    abcd

    abcd

    '一'

    '一二'

    一二

    一二

    '一二三'

    一二三

    一二三

    '一二三四'

    一二三四

    一二三四

    '一二三四五'

    一二三四

    一二三四

    4.MySQL中的列约束

      Constraint:约束,指插入数据时需要对数据进行的检验,商城中用户名唯一、密码不能为空、学生年龄必须在18~60之间....只有符合规定的数据才允许插入,否则插入失败。

      CREATE  TABLE  表 ( 列名  类型  约束  );

    SQL标准共提供六种列约束:

    (1)唯一约束:unique

      声明为唯一约束的列上不能出现重复值。

    (2)非空约束:not  null

      声明了非空约束的列上不能出现null值

    (3)主键约束:primary  key

      声明为主键的列上不能出现重复值,也不能出现null值且数据库根据主键列上值对整个表中的数据由小到大排序!

      注意:一个表中最多只能有一个列声明PRIMARY KEY!其它唯一且非空的列只能声明为 UNIQUE  NOT  NULL;

    小知识:计算机中NULL的含义

    Null:空、空白、空缺,指应该有此数据,但暂时不知道确切的值,就可以先声明为null。员工.年终奖、新员工.部门编号、新部门.尚未确定的部门经理

    课后练习:创建学子商城必需的数据库结构,注意列类型和列约束

    编写SQL脚本文件,重新创建数据库xz进入该数据库;

    创建笔记本型号表:

    xz_laptop_family(

    fid-型号编号,  

    fname-型号名称,

    laptopCount-属于该型号的笔记本数量 

    )

    插入三种笔记本型号,如联想E470”小米Air”“MacBook”,每型号对应的笔记本数量分别有3/2/2。

    创建笔记本信息表:

    xz_laptop(

    lid-笔记本编号

    pic-图片

    title-标题

    price-价格

    type-所属类别,如轻薄”/“游戏本”/“普通

    marketDate-上市日期

    isOnIndexTop-是否首页置顶显示

    familyId-所属型号的编号

    )

    插入7条笔记本记录,分属于上述三笔记本型号。

    删除编号为5的笔记本,对应的型号下笔记本数量应该-1

    修改编号2的笔记本所属型号为另一种型号,原型号下的笔记本数量-1新型号下的笔记本数量+1.

  • 相关阅读:
    自助Linux之问题诊断工具strace
    Linux系统与程序监控工具atop教程
    Google C++单元测试框架(Gtest)系列教程之三——测试固件(Test fixture)
    SQLServer2005:在执行批处理时出现错误。错误消息为: 目录名无效
    无法为可更新的订阅设置发布服务器登录名
    忘记SQL SERVER帐户sa的密码
    SQL Server 2008 R2 跟踪标志
    sys.dm_os_volume_stats监控物理磁盘
    SQL SERVER 中常见的高可用方案
    Vim操作的四种模式
  • 原文地址:https://www.cnblogs.com/QiliPING9/p/9027956.html
Copyright © 2011-2022 走看看