精华内容
下载资源
问答
  • 数据库查询新增一列默认值 场景:我们在做数据库查询时候,可能会遇到需要需要返回一列默认值。 假如我们在查询一张user表时,需要返回一列固定的比如机构号org,我们可以通过sql语句实现。 select (242) as ...

    数据库查询新增一列默认值

    场景:我们在做数据库查询时候,可能会遇到需要需要返回一列默认值。

    假如我们在查询一张user表时,需要返回一列固定的比如机构号org,我们可以通过sql语句实现。

    	select (242) as amedOrg,catname from user;
    

    执行结果:
    在这里插入图片描述

    展开全文
  • 如何在数据库新增一列 用C#语句操作 貌似用SQL语句 那个列名 不能直接调用combobox里的选项值;
  • MariaDB数据库命令与SQL语句----------------------------------------------------------------------------------------------------------------------------------------------数据库客户端命令1、mysql,...

    MariaDB数据库命令与SQL语句

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

    一、数据库客户端命令

    1、mysql,连接数据库

    -A,--no-auto-rehash 禁止补全

    -u,--user= 用户名,默认为root

    -U,以安全模式登录

    -h,--host= 服务器主机,默认为localhost

    -p,--passowrd= 用户密码,建议使用-p,默认为空密码

    -P,--port= 服务器端口

    -S,--socket= 指定连接socket文件路径

    -D,--database= 指定默认数据库

    -C,--compress 启用压缩

    -e SQL,“ 执行SQL命令

    -V,--version 显示版本

    -v,--verbose 显示详细内容

    --print-defaults 获取程序默认使用的配置

    2、服务器监听的两种socket地址

    ip socket:监听在tcp的3306端口,支持远程通信

    unix sock:监听在sock文件上,仅支持本机通信

    3、执行命令

    (1)mysql -uUSER -pPASSWORD,连接数据库,此处也可以输入mysql -uUSER -p,回车后弹出输入密码也可以。指令中-u后的用户和-p后的密码与各自的选项没有空格

    b0a85598badeb7439222edbda80ac238.png

    (2)mysql -uroot -pPASSWORD < /路径/DBFILE,导入数据库

    4、其它工具

    mysql_secure_installation 一个脚本,辅助及设置工具

    mysqldump    备份工具

    mysqladmin    基于mysql协议管理mysql的工具

    mysqlimport    数据导入工具

    5、如果写脚本需要插入SQL数据,可以将命令按照SQL语句写入一个文件,此时用命令

    mysql -uUSER -pPASSWORD < SQLFILE

    6、配置文件

    执行顺序为后面文件覆盖前面的文件,最下方文件优先级最高

    /etc/my.cnf                              Global选项

    注:/etc/my.cnf的[mysqld]下添加skip_networking=1,表示关闭远程端口,只能本机连接本机数据库

    /etc/mysql/my.cnf                   Global选项

    SYSCONFDIR/my.cnf            Global选项

    $MYSQL_HOME/my.cnf        Server-specific 选项

    --defaults-extra-file=path

    ~/.my.cnf                                User-specific 选项

    注:工作中可能需要更改数据库提示符以区分环境,建议在/etc/profile.d/下新建个.sh文件,里面写上export MYSQL_PS1="(\u@\h \v)[\d]>",之后 . 启动一次该脚本

    a845ac36c67aca6d90905c5d203f4348.png

    或者在/etc/my.cnf.d/mysql-clients.cnf的[mysql]下添加

    dc86be6d2c1dd11cc52c1a65fa641a09.png

    二、服务器端命令

    1、SQL语言规范

    数据库中SQL语句不区分大小写

    SQL语句可以单行或多行书写,以分号结尾

    关键词不能跨多行或者简写

    2、数据库对象

    (1)数据库对象:数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等

    (2)命名规则:

    必须以字母开头

    可包括数字和三个特殊字符(# _ $)

    不要使用MySQL的保留字

    同一database(Schema)下的对象不能同名

    3、SQL语句分类

    (1)DDL: Data DefinationLanguage 数据定义语言

    CREATE,DROP,ALTER

    (2)DML: Data Manipulation Language数据操纵语言

    INSERT,DELETE,UPDATE

    (3)DCL:Data Control Language 数据控制语言

    GRANT,REVOKE,COMMIT,ROLLBACK

    (4)DQL:Data Query Language 数据查询语言

    SELECT

    4、数据类型

    c046746c5876932fec37e037016499ec.png

    show databases;                 显示所有数据库

    select user();                       显示所有用户

    use DBNAME                      切换数据库

    quit                                      退出数据库

    create database DBNAME  创建数据库

    drop database name           直接删除数据库,不提醒

    show tables;                        显示表

    describe tablename;            显示具体的表结构

    select 中加上distinct           去除重复字段

    show table status from DBNAME\G    查看某个数据库的存储引擎

    show create DBNAME/TBLNAME\G    查看数据库或者表的存储引擎

    注:像对于数据库增删改操作都是需要慎重的操作,因此连接数据库时,最好需要mysql -U连接,或者/etc/my.cnf.d/my-clients.cnf文件中[mysqld]下添加safe_upgrade,这样系统对危险操作会提示或者拒绝

    5、SQL语句演示

    (1)CREATE TABLE students (id int UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED);

    建立students表,字段有id(id为正整数,无符号,不能为空并且设置为主键)、姓名(可变字段长度为20,不能为空)、年龄(小整数型,无符号)

    (2)CREATE TABLE students2 (id int UNSIGNED NOT NULL ,name VARCHAR(20) NOT NULL,age tinyint UNSIGNED,PRIMARY KEY(id,name));

    建立students2表,字段有id(id为正整数,无符号,不能为空)、姓名(可变字段长度为20,不能为空)、年龄(小整数型,无符号),主键设置为复合主键(id,name)

    (3)ALTER TABLE students RENAME s1;

    修改表格名称students为s1

    (4)ALTER TABLE s1 ADD phone varchar(11) AFTER name;

    修改表格s1,在name字段后添加phone字段,该字段为可变长度字符型,11个字节

    注意:alter没有before字段,如果插入的字段在首列,用FIRST

    (5)ALTER TABLE s1 MODIFY phone int;

    修改表格s1,更改phone字段数据类型为正整数型

    (6)ALTER TABLE s1 CHANGE COLUMN phone mobile char(11);

    修改表格s1,更改字段phone为mobile,该字段为固定长度字符型,11个字节长度上限

    (7)ALTER TABLE s1 DROP COLUMN mobile;

    修改表格s1,删除mobile列

    (8)Drop TABLE 删除表

    (9)ALTER TABLE students ADD gender ENUM('m','f')

    修改表格students,添加字段gender,取值只有m、f

    (10)ALETR TABLE students CHANGE id sid int UNSIGNED NOT NULL PRIMARY KEY;

    修改表格students,改变字段id为sid,定义sid无符号,不为空且为主键

    (11)ALTER TABLE students ADD UNIQUE KEY(name);

    修改表格students,设置name字段为唯一键

    (12)ALTER TABLE students ADD INDEX(age);

    修改表格students,设置索引字段为age

    (13)DESC students;

    显示学生表结构

    (14)SHOW INDEXES FROM students;

    显示学生表的索引字段

    (15)ALTER TABLE students DROP age;

    删除年龄字段

    (16)INSERT INTO students VALUES(1,'tom','m'),(2,'alice','f');

    (知道表结构只有id姓名性别这三个字段情况下)插入学生表

    (17)INSERT INTO students(id,name) VALUES(3,'jack'),(4,'allen');

    根据学生表id、姓名,对应插入3 jack和4 allen

    (18)SELECT * FROM students WHERE id < 3;

    查询id号小于3的学生

    (19)SELECT * FROM students WHERE gender='m';

    查询gender是m的学生

    (20)SELECT * FROM students WHERE gender IS NULL;

    查询gender为空的学生

    (21)SELECT * FROM students ORDER BY name DESC LIMIT 1,2;

    按name倒序排列,跳过第一个,查询学生表跳过后的前两条记录

    (22)SELECT * FROM students WHERE id >=2 and id <=4

    查询id大于等于2,小于等于4的记录

    (23)SELECT * FROM students WHERE id in ('2','4')

    查询id等于2或者4的记录

    (24)SELECT * FROM students WHERE id BETWEEN 2 AND 4

    查询id位于2到4之间的记录

    (25)SELECT * FROM students WHERE name LIKE ‘t%’

    查询字段name中以t开头的内容

    (26)SELECT * FROM students WHERE name RLIKE '.*[lo].*';

    查询字段name中包含l或者o的记录

    (27)SELECT id stuid,name as stuname FROM students

    查询字段id、stuid、name(显示结果以stuname)

    注意:使用group by分组语句时,查询的数据内容通常会将group by后的字段也一并加入select语句之后作为查询结果的区分,并且查询语句中如果有判断条件语句,分组前对结果的条件判断依旧用where,分组后对结果的条件判断用having,举例

    select ClassID,avg(Age),name from students where gender='f' group by ClassID having name like 'L%';

    从学生表中查询ClassID,avg(Age)、name字段,条件为gender值为f的记录,并以ClassID为单位进行分组,分组后的结果筛选出name记录里以L开头的记录

    cb42d335aff750aaf6df962d1e16c8ee.png

    6、多表查询

    (1)交叉连接:笛卡尔乘积

    (2)内连接:

    等值连接:让表之间的字段以“等值”建立连接关系;

    不等值连接

    自然连接:去掉重复列的等值连接

    自连接

    (3)外连接:

    左外连接:

    FROM tb1 LEFT JOIN tb2 ON tb1.col=tb2.col

    右外连接

    FROM tb1 RIGHT JOIN tb2 ON tb1.col=tb2.col

    eb1ceec70f29ce72ff9092a2fa07a82a.png

    7、视图view

    视图:view,虚表,保存有实表的查询结果,如果我们经常用到一句很长的SQL语句,为避免每次都输入那么长的语句,此时可以建立视图:create view VIEWNAME as SQLSENTENCE;等待下次引用就可以select * from VIEWNAME;直接查询。举例说明create view view_students_score as select s.stuid as stu_id,s.name as stu_name,sc.score,c.course from students as s inner join scores sc on s.stuid=sc.stuid inner join courses c on sc.courseid=c.courseid;该语句创建学生成绩表视图,等下次再用该表时候用命令select * from view_students_score;即可

    ae3ca92f239ace02fb2f0835433b6de8.png

    展开全文
  • ,修改表 PostgreSQL 提供了族命令用于修改现有表。  可以实现: 增加字段, 删除字段, 增加约束, 删除约束, 修改默认值, 重命名字段, ...这些操作可以用:ALTER TABLE命令执行的。...新增的字段对...

    一,修改表
    PostgreSQL 提供了一族命令用于修改现有表。 
    可以实现:
    增加字段,
    删除字段,
    增加约束,
    删除约束,
    修改默认值,
    重命名字段,
    重命名表。
    这些操作可以用:ALTER TABLE命令执行的。

    1,增加字段
    要增加一个字段,使用这条命令: 
    ALTER TABLE products ADD COLUMN description text;
    新增的字段对于表中已经存在的行而言最初将先填充空值。 
    你也可以同时在该字段上定义约束,使用通常的语法: 
    ALTER TABLE products ADD COLUMN description text CHECK (description <> ‘’);
    一个新字段不能用非空约束,因为最初的时候该字段必须包含空值。 但是你可以稍后增加一个非空约束。同样,你也不能在一个新字段 上定义默认值。根据 SQL 标准的说明,这样需要对现存行的新 字段填充默认值,而这个特性还没有实现。但是你可以稍后调整 字段预设。

    2,删除字段
    除一个字段: 
    ALTER TABLE products DROP COLUMN description;

    3,增加约束
    要增加一个约束,使用表约束语法。比如: 
     代码示例:
    ALTER TABLE products ADD CHECK (name <> ‘’);
    ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no);
    ALTER TABLE products ADD FOREIGN KEY (product_group_id) REFERENCES product_groups;

    要增加一个不能写成表约束的非空约束,使用下面语法: 
    ALTER TABLE products ALTER COLUMN product_no SET NOT NULL;

    这个约束将立即进行检查,所以表在加入约束之前必须符合约束条件。

    4,删除约束
    要删除一个约束,你需要知道它的名字。如果你给了它一个名字, 那么事情就好办了。
    否则系统会分配一个生成的名字,这样你就需要 把它找出来了。psql 的命令 \d tablename 在这儿可以帮忙﹔ 
    其它接口可能也提供了检查表的细节的方法。
    命令: 
    ALTER TABLE products DROP CONSTRAINT some_name;
    除了非空约束外,所有约束类型都这么用。要删除非空类型,用 
    ALTER TABLE products ALTER COLUMN product_no DROP NOT NULL;
    (要记得非空约束没有名字。)

    5,改变默认值
    要给一个字段设定默认值,使用一个象下面这样的命令: 
    ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77;
    要删除默认值,用 
    ALTER TABLE products ALTER COLUMN price DROP DEFAULT;
    这样相当于把预设设定为空,至少在 PostgreSQL里是这样的。 
    如果删除一个还没有定义的默认值不算错误,因为预设隐含就是空值。

    6,给字段改名字
    重命名一个字段: 
    ALTER TABLE products RENAME COLUMN product_no TO product_number;

    7,给表改名字
     代码示例:
    To rename a table: 
    ALTER TABLE products RENAME TO items;

    Name
    ALTER TABLE – 修改表的定义
    Synopsis

    ALTER TABLE [ ONLY ] name [ * ]
    action [, … ]
    ALTER TABLE [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column TO new_column
    ALTER TABLE name
    RENAME TO new_name
    ALTER TABLE name
    SET SCHEMA new_schema

    这里 action 是下列之一:

    ADD [ COLUMN ] column type [ column_constraint [ ... ] ]
    DROP [ COLUMN ] column [ RESTRICT | CASCADE ]
    ALTER [ COLUMN ] column TYPE type [ USING expression ]
    ALTER [ COLUMN ] column SET DEFAULT expression
    ALTER [ COLUMN ] column DROP DEFAULT
    ALTER [ COLUMN ] column { SET | DROP } NOT NULL
    ALTER [ COLUMN ] column SET STATISTICS integer
    ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
    ADD table_constraint
    DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]
    DISABLE TRIGGER [ trigger_name | ALL | USER ]
    ENABLE TRIGGER [ trigger_name | ALL | USER ]
    CLUSTER ON index_name
    SET WITHOUT CLUSTER
    SET WITHOUT OIDS
    OWNER TO new_owner
    SET TABLESPACE new_tablespace
    

    描述
    ALTER TABLE 变更一个现存表的定义。它有好几种子形式:

    ADD COLUMN
    这种形式用和 CREATE TABLE 里一样的语法向表中增加一个新的字段。

    DROP COLUMN
    这种形式从表中删除一个字段。请注意,和这个字段相关的索引和表约束也会被自动删除。 如果任何表之外的对象依赖于这个字段, 你必须说CASCADE,比如,外键参考,视图等等。

    ALTER COLUMN TYPE
    这种类型改变表中一个字段的类型。该字段涉及的索引和简单的表约束将被自动地转换为使用新的字段类型, 方法是重新分析最初提供的表达式。可选的 USING 子句声明如何从旧的字段值里计算新的字段值; 如果省略,那么缺省的转换就是从旧类型像新类型的赋值转换。如果从旧数据类型到新类型没有隐含或者赋值的转换, 那么必须提供一个 USING。

    SET/DROP DEFAULT
    这种形式为一个字段设置或者删除缺省值。请注意缺省值只应用于随后的 INSERT 命令; 它们不会导致已经在表中的行的数值的修改。我们也可以为视图创建缺省, 这个时候它们是在视图的 ON INSERT 规则应用之前插入 INSERT 语句中去的。

    SET/DROP NOT NULL
    这些形式修改一个字段是否标记为允许 NULL 值或者是拒绝 NULL 值。 如果表在字段中包含非空值,那么你只可以 SET NOT NULL。

    SET STATISTICS
    这个形式为随后的 ANALYZE 操作设置每字段的统计收集目标(default_statistics_target)。 目标的范围可以在 0 到 1000 之内设置;另外,把他设置为 -1 则表示重新恢复到使用系统缺省的统计目标。 有关 PostgreSQL 查询规划器使用的统计信息的更多信息, 请参考Section 13.2。

    SET STORAGE
    这种形式为一个字段设置存储模式。这个设置控制这个字段是内联保存还是保存在一个附属的表里,以及数据是否要压缩。 PLAIN 必需用于定长的数值,比如 integer,并且是内联的,不压缩的。 MAIN 用于内联,可压缩的数据。 EXTERNAL 用于外部保存,不压缩的数据, 而 EXTENDED 用于外部的压缩数据。 EXTENDED 是大多数支持非 PLAIN 存储的数据之缺省。 使用 EXTERNAL 将令在 text 字段上的子字串操作更快, 付出的代价是增加了存储空间。 请注意 SET STORAGE 本身并不改变表上的任何东西, 只是设置将来的表操作时,建议使用的策略。参阅 Section 50.2 获取更多信息。

    ADD table_constraint
    这个形式给表增加一个新的约束,用的语法和 CREATE TABLE 一样。

    DROP CONSTRAINT
    这个形式删除一个表上的约束。 目前,在表上的约束不要求有唯一的名字,因此可能有多个约束匹配声明的名字。 所有这样的约束都将被删除。

    DISABLE/ENABLE TRIGGER
    这个形式关闭或者打开属于该表的触发器。 一个被关闭掉的触发器是系统仍然知道的,但是在触发器事件发生的时候不会被执行。 对于一个推迟了的触发器,在事件发生的时候会检查打开状态,而不是在函数实际执行的时候。 我们可以通过申明名字的方法打开或者关闭任意一个触发器, 或者是该表上的所有触发器,或者只是用户触发器(这个选项排除了那些用于实现外键约束的触发器)。 打开或者关闭约束触发器要求超级用户权限; 这么做的时候应该小心,因为如果触发器不执行的话,约束保证的数据完整性也就没有办法确保了。

    CLUSTER
    这种形式为将来的 CLUSTER 选项选择缺省索引。它实际上并不重新对表建簇。

    SET WITHOUT CLUSTER
    这种形式从表中删除最新使用的 CLUSTER 索引。 这样会影响将来那些没有声明索引的建簇操作。

    SET WITHOUT OIDS
    这种形式从表中删除 oid 系统字段。 它和 DROP COLUMN oid RESTRICT 完全相同, 只不过是如果表上已经没有 oid 字段了,那么它不会报告错误。

    请注意,不存在某种 ALTER TABLE 的变种可以在删除了 OID 之后再把它们恢复回来。

    RENAME
    RENAME 形式改变一个表的名字(或者是一个索引,一个序列,或者一个视图)或者是表中一个独立字段的名字。 它对存储的数据没有任何影响。

    OWNER
    这个形式改变表,序列或者视图的所有者为指定所有者。

    SET TABLESPACE
    这种形式把表的表空间修改为指定的表空间并且把与表相关的数据文件移动到新的表空间去。 如果在表上呦索引,则不会移动。但是他们可以通过额外的 SET TABLESPACE 命令移动。参阅 CREATE TABLESPACE。

    RENAME
    RENAME 形式改变一个表(或者一个索引,序列,或者视图)的名字, 或者是表中独立字段的名字。它们对存储的数据没有影响。

    SET SCHEMA
    这种形式把表移动到另外一个模式。相关的索引,约束,以及 SERIAL 字段的序列都跟着移动。

    除了 RENAME 和 SET SCHEMA 之外所有动作都可以捆绑再一个多次修改的列表中同时施用。 比如,我们可以在一个命令里增加几个字段和/或修改几个字段的类型。 对于大表,这么做特别有用,因为只需要对该表做一次处理。

    要使用 ALTER TABLE,你必需拥有该表。 要修改一个表的模式,你必须在新的模式上有 CREATE 权限。要修改所有者,你必须还是新的所有角色的直接或者间接的成员, 并且该角色在该表的模式上必须拥有 CREATE 权限。 (这样的限制就保证了修改所有者这个动作和删除、重建该表能做到的动作没有什么区别。 不过,超级用户可以修改任何表的所有者。)

    参数
    table
    试图更改的现存表(可能有模式修饰)的名称。 如果声明了 ONLY,则只更改该表。 如果没有声明 ONLY,则该表及其所有后代表(如果有)都被更新。 我们可以在表名字后面附加一个 * 表示后代表都被扫描,但是在目前的版本里,这是缺省行为。 (在7.1之前的版本,ONLY 是缺省的行为。)缺省可以通过改变配置选项 sql_inheritance 来改变。

    column
    现存或新的字段名称。

    new_column
    现存字段的新名称。

    new_name
    表的新名称。

    type
    新字段的类型,或者现存字段的新类型。

    table_constraint
    表的新的约束定义。

    constraint_name
    要删除的现有约束的名字。

    trigger_name
    要打开或者关闭的单个触发器的名字。

    ALL
    打开或者关闭属于该表的所有触发器。 (如果这些触发器中有外键约束,那么就要求超级用户权限。)

    USER
    打开或者关闭所有属于该表的非外键约束触发器。

    index_name
    要标记为建簇的表上面的索引名字。

    CASCADE
    自动删除依赖于被依赖字段或者约束的对象(比如,引用该字段的视图)。

    RESTRICT
    如果字段或者约束还有任何依赖的对象,则拒绝删除该字段。 这是缺省行为。

    new_owner
    该表的新所有者的用户名。

    new_tablespace
    这个表将要移动往的表空间名字。

    new_schema
    表将移动前往的模式的名字。

    注意
    COLUMN 关键字是多余的,可以省略。

    如果用 ADD COLUMN 增加一个字段,那么所有表中现有行都初始化为该字段的缺省值 (如果没有声明 DEFAULT 子句,那么就是 NULL)。

    用一个非空缺省增加一个字段或者是改变一个字段的现有类型会要求整个表的重写。 对于大表来说,这个操作可能会花很长时间;并且它还临时需要两倍的磁盘空间。

    增加一个 CHECK 或者 NOT NULL 约束要求扫描该表以保证现有的行复合约束要求。

    提供在一个 ALTER TABLE 里面声明多个修改的主要原因是原先需要的对表的多次扫描和重写可以组合成一个回合。

    DROP COLUMN 命令并不是物理上把字段删除, 而只是简单地把它标记为 SQL 操作中不可见的。随后对该表的插入和更新将在该字段存储一个 NULL。 因此,删除一个字段是很快的,但是它不会立即缩减你的表在磁盘上的大小,因为被删除了的字段占据的空间还没有回收。 这些空间将随着现有的行的更新而得到回收。

    ALTER TYPE 要求重写整个表的特性有时候是一个优点, 因为重写的过程消除了任何表中的没用的空间。比如,要想立刻回收被一个已经删除的字段占据的空间, 最快的方法是

    ALTER TABLE table ALTER COLUMN anycol TYPE anytype;
    这里 anycol 是任何在表中还存在的字段,而 anytype 是和该字段的原类型一样的类型。 这样的结果是在表上没有任何可见的语意的变化,但是这个命令强迫重写,这样就删除了不再使用的数据。

    ALTER TYPE 的 USING 选项实际上可以声明涉及该行旧值的任何表达式; 也就是说,它可以引用除了正在被转换的字段之外其它的字段。这样,我们就可以用 ALTER TYPE 语法做非常普遍性的转换。因为这个灵活性,USING 表达式并没有施用于该字段的缺省值(如果有的话); 结果可能不是缺省表达式要求的常量表达式。 这就意味着如果从旧类型到新类型如果没有隐含或者赋值转换的话, 那么即使存在 USING 子句的情况下, ALTER TYPE 也可能无法把缺省值转换成新的类型。 在这种情况下,我们应该用 DROP DEFAULT 先删除缺省, 执行 ALTER TYPE,然后使用 SET DEFAULT 增加一个合适的新缺省。 类似的考虑也适用于涉及该字段的索引和约束。

    如果表有任何后代表,那么如果不在后代表上做同样的修改的话, 就不允许在父表上增加,重命名或者修改一个字段的类型,也就是说, ALTER TABLE ONLY将被拒绝。这样就保证了后代表总是有和父表匹配的字段。

    一个递归DROP COLUMN 操作将只有在后代表并不从任何其它父表中继承该字段并且从来没有独立定义该字段的时候才能删除一个后代表的字段。 一个非递归的DROP COLUMN(也就是,ALTER TABLE ONLY … DROP COLUMN)从来不会删除任何后代字段, 而是把他们标记为独立定义的,而不是继承的。

    TRIGGER,CLUSTER,OWNER,和 TABLESPACE 行为绝不会递归到后代表; 也就是说,它们的行为就像总是声明了 ONLY 一样。 添加一个约束只能在CHECK 约束上递归。

    不允许更改系统表结构的任何部分。

    请参考 CREATE TABLE 部分获取更多有效参数的描述。 Chapter 5 里有更多有关继承的信息。

    例子
    向表中增加一个 varchar 列:

    ALTER TABLE distributors ADD COLUMN address varchar(30);

    从表中删除一个字段:

    ALTER TABLE distributors DROP COLUMN address RESTRICT;

    在一个操作中修改两个现有字段的类型:

    ALTER TABLE distributors
    ALTER COLUMN address TYPE varchar(80),
    ALTER COLUMN name TYPE varchar(100);

    使用一个 USING 子句, 把一个包含 UNIX 时间戳的 integer 字段转化成 timestamp with time zone:

    ALTER TABLE foo
    ALTER COLUMN foo_timestamp TYPE timestamp with time zone
    USING
    timestamp with time zone ‘epoch’ + foo_timestamp * interval ‘1 second’;

    对现存字段改名:

    ALTER TABLE distributors RENAME COLUMN address TO city;

    更改现存表的名字∶

    ALTER TABLE distributors RENAME TO suppliers;

    给一个字段增加一个非空约束:

    ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;
    从一个字段里删除一个非空约束:

    ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;

    给一个表增加一个检查约束:

    ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);

    删除一个表和它的所有子表的监查约束:

    ALTER TABLE distributors DROP CONSTRAINT zipchk;

    向表中增加一个外键约束:

    ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL;

    给表增加一个(多字段)唯一约束:

    ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);

    给一个表增加一个自动命名的主键约束,要注意的是一个表只能有一个主键:

    ALTER TABLE distributors ADD PRIMARY KEY (dist_id);

    把表移动到另外一个表空间:

    ALTER TABLE distributors SET TABLESPACE fasttablespace;

    把表移动到另外一个模式:

    ALTER TABLE myschema.distributors SET SCHEMA yourschema;

    兼容性
    ADD,DROP,和 SET DEFAULT 形式与 SQL 标准兼容。 其它形式是 PostgreSQL 对 SQL 标准的扩展。 还有,在一个 ALTER TABLE 命令里声明多于一个操作也是扩展。

    ALTER TABLE DROP COLUMN 可以用于删除表中的唯一的一个字段, 留下一个零字段的表。这是对 SQL 的扩展,它不允许零字段表。
    ————————————————
    版权声明:本文为CSDN博主「killer-leon」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u011627980/article/details/51352559

    展开全文
  • 数据库操作语句 创建数据库操作 修改数据库 新增数据文件 新增日志文件 使用数据库 删除数据库 二、数据表操作语句 新建数据表 由其他表创建新表 数据表新增列 三、数据操作语句 数据表中数据的插入...

    目录

    一、数据库操作语句

    创建数据库操作

    修改数据库

    新增数据文件

    新增日志文件

    重命名数据库

    修改文件属性

    删除数据库文件

    使用数据库

    删除数据库

    二、数据表操作语句

    新建数据表

    由其他表创建新表

    数据表新增列

    删除数据表

    三、数据操作语句

    数据表中数据的插入

    数据表中某些数据的修改

    数据表或表内元素的删除


    Hello,你好哇,我是灰小猿!一个超会写bug的程序猿!

    最近在进行SQL server数据库的相关学习,所以对该数据库的一些常用的操作语句进行了些总结。在这里和小伙伴们一起分享一下。先从最基本的数据库的操作语句开始。

    一、数据库操作语句

    创建数据库操作

    create database 数据库名
    
    /*新建数据文件*/
    
    on(
    
    name = 数据文件逻辑名称,
    
    filename = '数据文件物理名称.mdf',
    
    size = 文件起始大小,
    
    maxsize = 文件最大大小,(不设置时默认无限大)
    
    filegrowth = 文件每次增长大小(以MB或百分比增长)
    
    )
    
    /*创建日志文件*/
    
    log on(
    
    name = 日志文件逻辑名,
    
    filename = '日志文件物理名.ldf',
    
    size = 日志文件初始大小,
    
    maxsize = 文件最大大小,(不设置时默认无限大)
    
    filegrowth = 文件每次增长大小(以MB或百分比增长)
    
    )

     

    修改数据库

    新增数据文件

    alter database 数据库名称
    
    add file(
    
    name=数据文件逻辑名,
    
    filename='物理文件名.mdf',
    
    size=数据文件初始大小,
    
    maxsize=数据文件最大值,
    
    filegrowth = 文件每次增长大小(以MB或百分比增长)
    
    )

     

    新增日志文件

    新增日志文件与数据文件的不同之处是:在add后需要加上log 同时物理文件名后缀为ldf

    alter database 数据库名称
    
    add log file(
    
    name = 日志文件逻辑名,
    
    filename = '物理文件名.ldf',
    
    size = 日志文件起始大小,
    
    maxsize=数据文件最大值,
    
    filegrowth = 文件每次增长大小(以MB或百分比增长)
    
    )

     

    重命名数据库

    /*修改数据库名称的语法:*/
    /*第一钟:*/
    alter database databaseName
    modify name = newDatabaseName
    
    /*第二种:*/`
    exec sp_renamedb '原名','新名'

     

    修改文件属性

    修改文件属性 可以修改的属性有:filename,size,filegrowth,maxsize

    alter database databaseName
    modify file(
    name=fileName,
    maxsize=120mb,
    filegrowth=20mb
    )

     

    删除数据库文件

    alter database databaseName
    remove file fileName
    

     

    使用数据库

    use database databaseName 

     

    删除数据库

    drop database databaseName

     

    二、数据表操作语句

    新建数据表

    use 数据库名
    
    create table 表名{
    
    liet1 数据类型1,
    
    liet2 数据类型2,
    
    liet3 数据类型3
    
    }

     

    由其他表创建新表

    use databaseName
    
    select list1,list2,list3 into newTableName
    
    from tableName

     

    数据表新增列

    use databaseName
    
    alter table tableName
    
    add列名 数据类型

     

    删除数据表

    use library2012
    drop table 读者信息1

     

    三、数据操作语句

    数据表中数据的插入

    /*多行插入时括号后加逗号*/
    
    use databaseName
    
    insert into tableName values ('info1','info2'...)

     

    数据表中某些数据的修改

    use databaseName
    
    update tableName
    
    set 修改列1=修改的内容1,修改列2=修改的内容2
    
    where 先决条件

     

    数据表或表内元素的删除

    use databaseName
    
    delete tableName
    
    where 先决条件

     

    好了,关于数据库创建及数据表的一些常用操作就先和小伙伴分享到这里啦,有不足的地方还希望各位大佬能够提出更正,之后也会继续更新有关数据库查询等相关操作语句的总结。

    觉得不错记得点赞关注哟!

    大灰狼陪你一起进步!

    我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=389yyefwcqw4k

    展开全文
  • 数据库语句

    2018-12-25 11:33:14
    新增一个表的 alter table 表名 add 列名 datatype 删除一个表的 alter table 表名 drop column 列名 修改的数据类型 alter table 表名 alter column 列名 datatype auto_increment create table (p_id...
  • 、常用sqlshow variables like ...#出所有的服务器上的数据库altercreate database if not exists test;#创建数据库drop database fk;#删除数据库show tables from test;#显示数据库中的表use test;cr...
  • 行转一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。 用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比系列复杂的 SELECT...CASE ...
  • alert table (新增列的表名) add (新列名) comment (添加备注)+【after + 要跟随的字段名】可写可不写 ALTER TABLE ch_poliy_info ADD value6 VARCHAR(32) COMMENT '备注6' ...
  • PL/SQL 中修改数据库中的属性

    千次阅读 2019-02-22 08:49:57
    鼠标选中表右键 直接(手动)去修改数据库名称,数据库表名称,数据库列名称、属性   方法二: 使用SQL语句去修改 -- 修改表名 ALTER TABLE tableName RENAME newTableName; -- 新增列名 ALTER TABLE ...
  • 行转转行是我们在...行转一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。 用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比
  • 一 修改表列名 EXEC sp_rename 'table_name.[字段旧名]', '字段新名' , 'COLUMN'; 二 修改列类型 ALTER TABLEtable_nameALTER ...三 新增一列 ALTER TABLE table_name ADD column_name datatype ; 四...
  • SQL语句操作数据库

    2019-06-17 20:04:47
    操作完数据库后我们来操作数据库表,我们写个简单的在表中新增数据,首先我们来查询一下这个表中有没有数据,我们在橙色的框中看到表abc中是没有数据的。 下面我们进行新增新增用的是insert into。 选中那行...
  • 这里有A、B、C三列数据,我们新增一列D,在D列中添加公式:=CONCATENATE("insert into userinfo(login,username,password) values('",A1,"','",B1,"','",C1,"')"),然后拖动Excel表中的操作柄批量生成sql的insert语句,...
  • 13、说明:条sql 语句搞定数据库分页 select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 具体实现: ...
  • 1.新建一个view create view view_name as select * from table_name where... ...3.新增一列 ALTER TABLE table_nameADD column_name column_type 4.删除一列:COLUMN是关键字 ALTER TABL...
  • 数据库常用的增删改查sql语句

    万次阅读 多人点赞 2019-04-28 10:27:08
    新增一条数据 insert into 表名 values(全部的值,用”,“分割); insert into 表名 (字段1, 字段2) values (值1, 值2); 新增多行数据 insert into 表名 values(全部的值),(全部的值)....; insert into 表名 ...
  •  1、新增一列: ALTER TABLE 表名 ADD 列名 类型 NULL | NOT NULL 2、修改列的数据类型: ALTER TABLE 表名 ALTER COLUMN 列名 类型 3、删除一列: ALTER TABLE 表名 DROP COLUMN 列名 (删除多列时,列名用...
  • 新增一条数据 insert into 表名 values(全部的值,用”,“分割); insert into 表名 (字段1, 字段2) values (值1, 值2); 新增多行数据 insert into 表名 values(全部的值),(全部的值)....; insert into 表名 ...
  • 由于最近需要程序生成DDL,修改Oracle数据库的库表...1、新增一列:ALTER TABLE table_name ADD (column_name VARCHAR2(33 , 2) DEFAULT '2' NOT NULL) 2、删除一列:ALTER TABLE table_name DROP COLUMN column_na
  • 平时和数据打交道比较多的测试同学,可能会经常接触到数据库...或者让你批量修改某张大表中的某一列数据呢?这种时候我们往往需要借助存储过程。存储过程,就是在数据库中编写的sql语句集合,只要编写一次就可以反复...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 229
精华内容 91
关键字:

数据库新增一列语句