① sql怎麼添加自定義列並且將此列的數據作為條件查詢
經過測試:我的方法可行。不行再找我。
select Time as 日期 ,sum(Num) as 月份總和
from Warning
group by Time
order by Time asc
/*---- 不寫asc結果是一樣的,因為默認是asc 升序,從1,2,3號這樣開始升序排序。如果倒序則 desc
特別說明:依據樓主的提問:Time裡面的日期不一定是連貫的,
1: 利用 group by Time 分組----解釋:我把日期列Time 進行分組 如,1月, 2月, 3月, 4月, 5月
也就是說不管1月份的數據出現幾次都歸為一組,所有2月的都歸為一組。到這里聰明點的人就知道了,把歸為一組的 Num列 相加就可以實現要求了。
2:利用求和函數 sum (Num)把分組好的列求出他們的和就行了,這里就是所有1月為一組的會自動相加 (其他組的不相加),所有2月歸為一組的會自動相加。。。。。。
3:利用 order by Time asc 升序產生連貫1月,2月,3月,這樣升序排序。
4:特別說明:這里如果Time 列 數據類型是 datatime 的值是精確到時分秒的話,必須截取字元串,得到年月日或者只得到月份,因為時分秒分組的話就非常多了,1月份的時分秒都參與分組會有很多的,到時候得到1月份的和就變成1月份1號8點8分06秒 這個時間的都分組再求和。
5:樓主的要求:對應日期沒有數據則顯示0,isnull(你的列,0) 這個函數來轉換成為0 在求和。0的總和還是0。
所以最終寫成
select Time as 月份 ,sum(isnull(Num,0)) as 月份總和
from Warning
group by Time
order by Time asc
6:這個要求——因為第一列是表裡面原本沒有的,現在必須強行列出來,說得不太明確啊。
alter table 表名 add 列名 類型和屬性等 這語句是創建一個新的列。
----*/
② SQL怎麼限定已經賦值的列名做條件
--1.建表create table 表(data date,name varchar(10)) --2.插入數據 insert into 表 values('2010-1-1', '老李') insert into 表 values('2011-1-1', '小王') insert into 表 values('2011-1-1', '老李') insert into 表 values('2012-1-1', '小王') insert into 表 values('2012-1-1', '老李') insert into 表 values('2012-1-1', '張大') insert into 表 values('2013-1-1', '小王') insert into 表 values('2013-1-1', '老李') insert into 表 values('2013-1-1', '張大') insert into 表 values('2014-1-1', '小王') insert into 表 values('2014-1-1', '老李') insert into 表 values('2014-1-1', '張大') insert into 表 values('2015-1-1', '小王') insert into 表 values('2015-1-1', '老李') insert into 表 values('2015-1-1', '張大')
③ sql語句中如何為新增列指定為NOT NULL
主鍵肯定不能為not null了- -
還有就是看看有沒約束
ALTER TABLE 只允許添加滿足下述條件的列: 列可以包含空值;或者列具有指定的 DEFAULT 定義;或者要添加的列是標識列或時間戳列;或者,如果前幾個條件均未滿足,則表必須為空以允許添加此列。不能將列"xxx"添加到非空表"xx"中,因為它不滿足上述條件。
alter table xx add 添加列表要是空的
指定列是否可接受空值。如果列不允許空值,則只有在指定了默認值或表為空的情況下,才能用 ALTER TABLE 語句添加該列。只有同時指定了 PERSISTED 時,才能為計算列指定 NOT NULL。如果新列允許空值,但沒有指定默認值,則新列在表中的每一行都包含一個空值。如果新列允許空值,並且指定了新列的默認值,則可以使用 WITH VALUES 將默認值存儲到表中每個現有行的新列中。
如果新列不允許空值,並且表不為空,那麼 DEFAULT 定義必須與新列一起添加;並且,載入新列時,每個現有行的新列中將自動包含默認值。
在 ALTER COLUMN 語句中指定 NULL,可以強制 NOT NULL 列允許空值,但 PRIMARY KEY 約束中的列除外。只有列中不包含空值時,才可以在 ALTER COLUMN 中指定 NOT NULL。必須將空值更新為某個值後,才允許執行 ALTER COLUMN NOT NULL 語句,例如:
因為新建不能為空所以要先新建個可以為空的列
然後強制為空
下面代碼以測試
alter table 表名 add 列名 nvarchar(20) null
go
UPDATE 表名 SET stuName = N'some_value' WHERE 列名 IS NULL
ALTER TABLE 表名 ALTER COLUMN 列名 NVARCHAR(20) NOT NULL
go
④ SQL server語句所有的約束條件
1、主鍵約束(Primary Key constraint):要求主鍵列數據唯一,並且不允許為空。
2、唯一約束(Unique constraint):要求該列唯一,允許為空,但只能出現一個空值。
3、檢查約束(Check constraint):某列取值范圍限制,格式限制等,如有關年齡、郵箱(必須有@)的約束。
4、默認約束(Default constraint):某列的默認值,如在資料庫里有一項數據很多重復,可以設為默認值。
5、外鍵約束(Foreign Key constraint):用於在兩個表之間建立關系,需要指定引用主表的哪一列。
(4)sql的列定義條件擴展閱讀:
對於存在外鍵約束的表,如果進行刪除非空的外鍵,可能會出現錯誤。 如果在 FOREIGN KEY 約束的列中輸入非 NULL 值,則此值必須在被引用的列中存在,否則將返回違反外鍵約束的錯誤信息。
列級 FOREIGN KEY 約束的 REFERENCES 子句僅能列出一個引用列,且該列必須與定義約束的列具有相同的數據類型。表級 FOREIGN KEY 約束的 REFERENCES 子句中引用列的數目必須與約束列列表中的列數相同。每個引用列的數據類型也必須與列表中相應列的數據類型相同。
⑤ 怎樣用SQL語句把列定義在某一指定位置
SQL 是不可以的,這個SQL 查詢分析器 只負責顯示.假如要指定位置.只能在程序裡面寫 .
這個問題我沒有碰到過....不過我看很難...其實我們可以在程序裡面控制排序順序就可以了啊.比如說先顯示哪一列 .後顯示哪一列..... 表在客戶那裡有沒有關系啊.你自己改下程序就可以了.... 你讓 客戶可以自己修改顯示的欄位...全局變數..以及顯示的順序....就是在ListCtrl的列顯示循序就可以了...呵呵 ..增加還是增加到最後一個欄位.假如你要 全部讓客戶自己控制的話.則必須增加中文注釋... 用中文來建立表列名 ...增加一列可以.但是不能修改列之間的循序....很難...
這個很容易,你寫sql的時候注意下就可以了.可以通過臨時表來建立欄位啊..有兩種方法.一種是升級的時候查詢有沒有該欄位.假如有該欄位.則不建立該欄位.假如沒有該欄位 ,則執行 增加該欄位..對於每個欄位都這么設置.當然,前期要可以為空.或者設置默認值 .要不就會出錯...
SQL Server:
判斷欄位:
if not exists(
select * from syscolumns where name='列名'
and id= (
select id from sysobjects where xtype='u' and name ='表名'
)
)
--這里寫修改表結構的語句....
alter table 表
add id int default 0
⑥ 什麼是SQL裡面的約束條件請通俗一點,最好有列子
約束是SQL Sever自動強制資料庫完整的方式,約束定義了列中允許的取值。在SQL Sever中提供五種類型的完整性約束。1、NULL/NOT NULL 約束;2、UNIQUE約束(唯一約束);3、PRIMARY KEY 約束(主鍵約束);4、FOREIGN KEY 約束(外鍵約束)5、CHECK 約束
例如:1、create table s(Sno char(6) not null,
Sname char(10))
2、create table s(Sno char(6) ,
Sname char(10) unique)
3、create table s(Sno char(6) primary key,
Sname char(10))
4、create table SC(Sno char(6) not null foreign key references S(Sno))
5、create table SC(Sno char(6),
Cno char(6),
Score double check(Score>=0 and Score<=100))
以上這些如果你要看資料庫的書,裡面會詳細告訴你它們是如何使用的
⑦ SQL SEVER的列定義該怎麼設置
UIN定義成自增長,從10000開次,每次自增長1。FOOD MONEY你要自動輸入的值是什麼?在定義的時候,可以設置默認值為0。
⑧ SQL中規定某列值只能是0或者1的約束該怎麼寫
SQL CHECK約束。
CHECK約束用於限制列中的值的范圍。
如果對單個列定義CHECK約束,那麼該列只允許特定的值。
如果對一個表定義CHECK約束,那麼此約束會在特定的列中對值進行限制。
--刪除表
drop table temp;
--創建表
CREATE TABLE temp (flag NUMBER(1));
--增加約束
ALTER TABLE tempADDCONSTRAINTck_temp_flag CHECK
(flag=1 or flag=0);
--測試效果版
insert into temp values(1);
insert into temp values(0);
insert into temp values(1);
--測試效果(約束禁止插入數據),提示權:違反檢查約束條件
insert into temp values(2);
insert into temp values(3);
SQL CHECK Constraint on CREATE TABLE。
下面的SQL在"Persons"表創建時為"Id_P"列創建CHECK約束。CHECK約束規定"Id_P"列必須只包含大於0的整數。
My SQL:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)
(8)sql的列定義條件擴展閱讀:
不同資料庫的約束寫法:
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULLCHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
如果需要命名CHECK約束,以及為多個列定義CHECK約束,請使用下面的SQL語法:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)
SQL CHECK Constraint on ALTER TABLE.
如果在表已存在的情況下為"Id_P"列創建CHECK約束,請使用下面的SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (Id_P>0)
如果需要命名CHECK約束,以及為多個列定義CHECK約束,請使用下面的SQL語法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
撤銷CHECK約束。
如需撤銷CHECK約束,請使用下面的SQL:
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
⑨ 什麼是SQL裡面的約束條件
約束是SQL Sever自動強制資料庫完整的方式,約束定義了列中允許的取值。在SQL Sever中提供五種類型的完整性約束。1、NULL/NOT NULL 約束;2、UNIQUE約束(唯一約束);3、PRIMARY KEY 約束(主鍵約束);4、FOREIGN KEY 約束(外鍵約束)5、CHECK 約束
例如:1、create table s(Sno char(6) not null,
Sname char(10))
2、create table s(Sno char(6) ,
Sname char(10) unique)
3、create table s(Sno char(6) primary key,
Sname char(10))
4、create table SC(Sno char(6) not null foreign key references S(Sno))
5、create table SC(Sno char(6),
Cno char(6),
Score double check(Score>=0 and Score<=100))
⑩ 什麼是SQL裡面的約束條件
SQL 約束(Constraints)
SQL 約束用於規定表中的數據規則。
如果存在違反約束的數據行為,行為會被約束終止。
約束可以在創建表時規定(通過 CREATE TABLE 語句),或者在表創建之後規定(通過 ALTER TABLE 語句)。
本回答來自:SQL 約束(Constraints)_樹懶學堂
SQL CREATE TABLE + CONSTRAINT 語法